Syntek USB Video Camera
stk11xx-dev-0500.c
Go to the documentation of this file.
1
34#include <linux/module.h>
35#include <linux/init.h>
36#include <linux/kernel.h>
37#include <linux/version.h>
38#include <linux/errno.h>
39#include <linux/slab.h>
40#include <linux/kref.h>
41
42#include <linux/usb.h>
43#include <media/v4l2-common.h>
44#include <media/v4l2-ioctl.h>
45
46#include "stk11xx.h"
47#include "stk11xx-dev.h"
48
49
50//=============================================================================
51//
52// STK-0500 API
53//
54//=============================================================================
55
56
71{
72 STK_INFO("Initialize USB2.0 Syntek Camera\n");
73
74 usb_stk11xx_write_registry(dev, 0x0000, 0x00e0);
75 usb_stk11xx_write_registry(dev, 0x0002, 0x00f8);
76 usb_stk11xx_write_registry(dev, 0x0002, 0x0078);
77 usb_stk11xx_write_registry(dev, 0x0000, 0x0020);
78
81 usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
82
85 usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
86
89 usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
90
93 usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
94
97 usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
98
101 usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
102
105 usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
106
109 usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
110
112
115 usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
116
119 usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
120
122
125 usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
126
128
131 usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
132
134
136
138
139 usb_stk11xx_write_registry(dev, 0x0000, 0x00e0);
140 usb_stk11xx_write_registry(dev, 0x0002, 0x00f8);
141 usb_stk11xx_write_registry(dev, 0x0002, 0x0078);
142 usb_stk11xx_write_registry(dev, 0x0000, 0x0020);
143
145
146 usb_stk11xx_write_registry(dev, 0x0000, 0x00e0);
147 usb_stk11xx_write_registry(dev, 0x0002, 0x00f8);
148 usb_stk11xx_write_registry(dev, 0x0002, 0x0078);
149 usb_stk11xx_write_registry(dev, 0x0000, 0x0020);
150
152
153 // Device is initialized and is ready !!!
154 STK_INFO("Syntek USB2.0 Camera is ready\n");
155
156 return 0;
157}
158
159
174{
175 int value;
176
177 // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
178 static const int values_001B[] = {
179 0x03, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x0e, 0x0e, 0x0e
180 };
181 static const int values_001C[] = {
182 0x02, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x46, 0x46, 0x46
183 };
184 static const int values_0202[] = {
185 0x0a, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x0a, 0x1e, 0x1f, 0x1f, 0x0a, 0x1e, 0x1e
186 };
187 static const int values_0110[] = {
188 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01
189 };
190 static const int values_0112[] = {
191 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01
192 };
193 static const int values_0114[] = {
194 0x80, 0x80, 0x80, 0x80, 0x00, 0xbe, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x81, 0x81
195 };
196 static const int values_0115[] = {
197 0x02, 0x02, 0x02, 0x02, 0x05, 0x02, 0x02, 0x02, 0x00, 0x02, 0x02, 0x02, 0x05, 0x02, 0x02, 0x02, 0x02, 0x02
198 };
199 static const int values_0116[] = {
200 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe9, 0xe0, 0xe0, 0x00, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1
201 };
202 static const int values_0117[] = {
203 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01
204 };
205 static const int values_0100[] = {
206 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x21, 0x21
207 };
208
209
210 STK_DEBUG("dev_stk0500_configure_device : %d\n", step);
211
212 usb_stk11xx_write_registry(dev, 0x0000, 0x0024);
213 usb_stk11xx_write_registry(dev, 0x0002, 0x0078);
214 usb_stk11xx_write_registry(dev, 0x0003, 0x0080);
215 usb_stk11xx_write_registry(dev, 0x0005, 0x0000);
216
217 usb_stk11xx_write_registry(dev, 0x0007, 0x0003);
218 usb_stk11xx_write_registry(dev, 0x000d, 0x0000);
219 usb_stk11xx_write_registry(dev, 0x000f, 0x0002);
220 usb_stk11xx_write_registry(dev, 0x0300, 0x0012);
221 usb_stk11xx_write_registry(dev, 0x0350, 0x0041);
222
223 usb_stk11xx_write_registry(dev, 0x0351, 0x0000);
224 usb_stk11xx_write_registry(dev, 0x0352, 0x0000);
225 usb_stk11xx_write_registry(dev, 0x0353, 0x0000);
226 usb_stk11xx_write_registry(dev, 0x0018, 0x0010);
227 usb_stk11xx_write_registry(dev, 0x0019, 0x0000);
228
229 usb_stk11xx_write_registry(dev, 0x001b, values_001B[step]);
230 usb_stk11xx_write_registry(dev, 0x001c, values_001C[step]);
231 usb_stk11xx_write_registry(dev, 0x0300, 0x0080);
232 usb_stk11xx_write_registry(dev, 0x001a, 0x0004);
233 usb_stk11xx_write_registry(dev, 0x0202, values_0202[step]);
234
235 usb_stk11xx_write_registry(dev, 0x0110, values_0110[step]);
236 usb_stk11xx_write_registry(dev, 0x0111, 0x0000);
237 usb_stk11xx_write_registry(dev, 0x0112, values_0112[step]);
238 usb_stk11xx_write_registry(dev, 0x0113, 0x0000);
239 usb_stk11xx_write_registry(dev, 0x0114, values_0114[step]);
240
241 usb_stk11xx_write_registry(dev, 0x0115, values_0115[step]);
242 usb_stk11xx_write_registry(dev, 0x0116, values_0116[step]);
243 usb_stk11xx_write_registry(dev, 0x0117, values_0117[step]);
244
245 usb_stk11xx_read_registry(dev, 0x0100, &value);
246 usb_stk11xx_write_registry(dev, 0x0100, values_0100[step]);
247
248// usb_stk11xx_write_registry(dev, 0x0200, 0x0080);
249// usb_stk11xx_write_registry(dev, 0x0200, 0x0000);
250 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
251
252
253 switch (step) {
254 case 0:
255 usb_stk11xx_write_registry(dev, 0x0203, 0x0022);
256
257 usb_stk11xx_write_registry(dev, 0x0204, 0x0027);
258 usb_stk11xx_write_registry(dev, 0x0205, 0x00a5);
259
260 usb_stk11xx_write_registry(dev, 0x0200, 0x0005);
261
262 break;
263
264 case 1:
265 usb_stk11xx_write_registry(dev, 0x0203, 0x0060);
266
267 usb_stk11xx_write_registry(dev, 0x0204, 0x0012);
268 usb_stk11xx_write_registry(dev, 0x0205, 0x0080);
269 usb_stk11xx_write_registry(dev, 0x0204, 0x0013);
270 usb_stk11xx_write_registry(dev, 0x0205, 0x00bf);
271
272 usb_stk11xx_write_registry(dev, 0x0200, 0x0005);
273
274 break;
275
276 case 2:
277 usb_stk11xx_write_registry(dev, 0x0203, 0x0042);
278
279 usb_stk11xx_write_registry(dev, 0x0204, 0x0012);
280 usb_stk11xx_write_registry(dev, 0x0205, 0x0080);
281 usb_stk11xx_write_registry(dev, 0x0204, 0x0024);
282 usb_stk11xx_write_registry(dev, 0x0205, 0x00a5);
283
284 usb_stk11xx_write_registry(dev, 0x0200, 0x0005);
285
286 break;
287
288 case 3:
289 usb_stk11xx_write_registry(dev, 0x0203, 0x0042);
290
291 usb_stk11xx_write_registry(dev, 0x0204, 0x0012);
292 usb_stk11xx_write_registry(dev, 0x0205, 0x0080);
293 usb_stk11xx_write_registry(dev, 0x0204, 0x0013);
294 usb_stk11xx_write_registry(dev, 0x0205, 0x00e0);
295 usb_stk11xx_write_registry(dev, 0x0204, 0x0024);
296 usb_stk11xx_write_registry(dev, 0x0205, 0x00a5);
297
298 usb_stk11xx_write_registry(dev, 0x0200, 0x0005);
299
300 break;
301
302 case 4:
303 usb_stk11xx_write_registry(dev, 0x0203, 0x0042);
304
305 usb_stk11xx_write_registry(dev, 0x0204, 0x0012);
306 usb_stk11xx_write_registry(dev, 0x0205, 0x0080);
307 usb_stk11xx_write_registry(dev, 0x0204, 0x0013);
308 usb_stk11xx_write_registry(dev, 0x0205, 0x00bf);
309
310 usb_stk11xx_write_registry(dev, 0x0200, 0x0005);
311
312 break;
313
314 case 5:
315 usb_stk11xx_write_registry(dev, 0x0203, 0x0060);
316
317 usb_stk11xx_write_registry(dev, 0x0204, 0x0012);
318 usb_stk11xx_write_registry(dev, 0x0205, 0x0080);
319 usb_stk11xx_write_registry(dev, 0x0204, 0x0013);
320 usb_stk11xx_write_registry(dev, 0x0205, 0x00ff);
321
322 usb_stk11xx_write_registry(dev, 0x0200, 0x0005);
323
324 break;
325
326 case 6:
327 usb_stk11xx_write_registry(dev, 0x0203, 0x0060);
328
329 usb_stk11xx_write_registry(dev, 0x0204, 0x0012);
330 usb_stk11xx_write_registry(dev, 0x0205, 0x0080);
331 usb_stk11xx_write_registry(dev, 0x0204, 0x0013);
332 usb_stk11xx_write_registry(dev, 0x0205, 0x00b7);
333
334 usb_stk11xx_write_registry(dev, 0x0200, 0x0005);
335
336 break;
337
338 case 7:
339 usb_stk11xx_write_registry(dev, 0x0203, 0x0060);
340
341 usb_stk11xx_write_registry(dev, 0x0204, 0x0012);
342 usb_stk11xx_write_registry(dev, 0x0205, 0x0080);
343 usb_stk11xx_write_registry(dev, 0x0204, 0x0013);
344 usb_stk11xx_write_registry(dev, 0x0205, 0x00b7);
345
346 usb_stk11xx_write_registry(dev, 0x0200, 0x0005);
347
348 break;
349
350 case 8:
351 usb_stk11xx_write_registry(dev, 0x0203, 0x0060);
352
353 usb_stk11xx_read_registry(dev, 0x02ff, &value);
354 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
355
356 usb_stk11xx_write_registry(dev, 0x0203, 0x0060);
357 usb_stk11xx_write_registry(dev, 0x0204, 0x00ff);
358 usb_stk11xx_write_registry(dev, 0x0205, 0x0001);
359 usb_stk11xx_write_registry(dev, 0x0200, 0x0001);
360 dev_stk11xx_check_device(dev, 500);
361 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
362 usb_stk11xx_read_registry(dev, 0x02ff, &value);
363 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
364
365 usb_stk11xx_write_registry(dev, 0x0203, 0x0060);
366 usb_stk11xx_write_registry(dev, 0x0208, 0x000a);
367 usb_stk11xx_write_registry(dev, 0x0200, 0x0020);
368 dev_stk11xx_check_device(dev, 500);
369 usb_stk11xx_read_registry(dev, 0x0209, &value);
370 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
371 usb_stk11xx_read_registry(dev, 0x02ff, &value);
372 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
373
374 usb_stk11xx_write_registry(dev, 0x0203, 0x0060);
375 usb_stk11xx_write_registry(dev, 0x0208, 0x000b);
376 usb_stk11xx_write_registry(dev, 0x0200, 0x0020);
377 dev_stk11xx_check_device(dev, 500);
378 usb_stk11xx_read_registry(dev, 0x0209, &value);
379 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
380 usb_stk11xx_read_registry(dev, 0x02ff, &value);
381 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
382
383 usb_stk11xx_write_registry(dev, 0x0203, 0x0060);
384 usb_stk11xx_write_registry(dev, 0x0208, 0x001c);
385 usb_stk11xx_write_registry(dev, 0x0200, 0x0020);
386 dev_stk11xx_check_device(dev, 500);
387 usb_stk11xx_read_registry(dev, 0x0209, &value);
388 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
389 usb_stk11xx_read_registry(dev, 0x02ff, &value);
390 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
391
392 usb_stk11xx_write_registry(dev, 0x0203, 0x0060);
393 usb_stk11xx_write_registry(dev, 0x0208, 0x001d);
394 usb_stk11xx_write_registry(dev, 0x0200, 0x0020);
395 dev_stk11xx_check_device(dev, 500);
396 usb_stk11xx_read_registry(dev, 0x0209, &value);
397 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
398
399 break;
400
401 case 9:
402 usb_stk11xx_write_registry(dev, 0x0203, 0x00dc);
403
404 usb_stk11xx_write_registry(dev, 0x0204, 0x0015);
405 usb_stk11xx_write_registry(dev, 0x0205, 0x0080);
406
407 usb_stk11xx_write_registry(dev, 0x0200, 0x0005);
408
409 break;
410
411 case 10:
412 usb_stk11xx_write_registry(dev, 0x0203, 0x00ec);
413
414 usb_stk11xx_write_registry(dev, 0x0204, 0x0015);
415 usb_stk11xx_write_registry(dev, 0x0205, 0x0080);
416
417 usb_stk11xx_write_registry(dev, 0x0200, 0x0005);
418
419 break;
420
421 case 11:
422 usb_stk11xx_write_registry(dev, 0x0203, 0x00ba);
423
424 usb_stk11xx_read_registry(dev, 0x02ff, &value);
425 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
426
427 usb_stk11xx_write_registry(dev, 0x0203, 0x00ba);
428
429 usb_stk11xx_write_registry(dev, 0x0208, 0x0000);
430 usb_stk11xx_write_registry(dev, 0x0200, 0x0020);
431 dev_stk11xx_check_device(dev, 500);
432 usb_stk11xx_read_registry(dev, 0x0209, &value);
433 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
434
435 break;
436
437 case 12:
438 usb_stk11xx_write_registry(dev, 0x0203, 0x00ba);
439
440 usb_stk11xx_write_registry(dev, 0x0204, 0x00f0);
441 usb_stk11xx_write_registry(dev, 0x0205, 0x0000);
442 usb_stk11xx_write_registry(dev, 0x0200, 0x0005);
443
444 break;
445
446 case 13:
447 usb_stk11xx_write_registry(dev, 0x0203, 0x00ba);
448
449 usb_stk11xx_read_registry(dev, 0x02ff, &value);
450 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
451
452 usb_stk11xx_write_registry(dev, 0x0203, 0x00ba);
453 usb_stk11xx_write_registry(dev, 0x0208, 0x0000);
454 usb_stk11xx_write_registry(dev, 0x0200, 0x0020);
455 dev_stk11xx_check_device(dev, 500);
456 usb_stk11xx_read_registry(dev, 0x0209, &value);
457 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
458 usb_stk11xx_read_registry(dev, 0x02ff, &value);
459 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
460
461 usb_stk11xx_write_registry(dev, 0x0203, 0x00ba);
462 usb_stk11xx_write_registry(dev, 0x0208, 0x00f1);
463 usb_stk11xx_write_registry(dev, 0x0200, 0x0020);
464 dev_stk11xx_check_device(dev, 500);
465 usb_stk11xx_read_registry(dev, 0x0209, &value);
466 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
467
468 break;
469
470 case 14:
471 usb_stk11xx_write_registry(dev, 0x0203, 0x00ba);
472
473 usb_stk11xx_write_registry(dev, 0x0204, 0x0001);
474 usb_stk11xx_write_registry(dev, 0x0205, 0x0000);
475 usb_stk11xx_write_registry(dev, 0x0200, 0x0005);
476 break;
477
478 case 15:
479 usb_stk11xx_write_registry(dev, 0x0203, 0x007a);
480
481 usb_stk11xx_write_registry(dev, 0x0205, 0x0030);
482 usb_stk11xx_write_registry(dev, 0x0200, 0x0000);
483 usb_stk11xx_write_registry(dev, 0x0200, 0x0061);
484 dev_stk11xx_check_device(dev, 500);
485 usb_stk11xx_read_registry(dev, 0x0209, &value);
486 usb_stk11xx_write_registry(dev, 0x0200, 0x0020);
487 dev_stk11xx_check_device(dev, 500);
488 usb_stk11xx_read_registry(dev, 0x0209, &value);
489 usb_stk11xx_write_registry(dev, 0x02ff, 0x0001);
490 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
491
492 break;
493
494 case 16:
495 usb_stk11xx_write_registry(dev, 0x0203, 0x0050);
496
497 usb_stk11xx_read_registry(dev, 0x02ff, &value);
498 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
499
500 usb_stk11xx_write_registry(dev, 0x0203, 0x0050);
501 usb_stk11xx_write_registry(dev, 0x0208, 0x0000);
502 usb_stk11xx_write_registry(dev, 0x0200, 0x0020);
503 dev_stk11xx_check_device(dev, 500);
504 usb_stk11xx_read_registry(dev, 0x0209, &value);
505 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
506
507 break;
508
509 case 17:
510 usb_stk11xx_write_registry(dev, 0x0203, 0x0050);
511
513
514 usb_stk11xx_read_registry(dev, 0x02ff, &value);
515 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
516
517 usb_stk11xx_write_registry(dev, 0x0203, 0x0050);
518 usb_stk11xx_write_registry(dev, 0x0208, 0x0003);
519 usb_stk11xx_write_registry(dev, 0x0200, 0x0020);
520 dev_stk11xx_check_device(dev, 500);
521 usb_stk11xx_read_registry(dev, 0x0209, &value);
522
523 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
524 usb_stk11xx_read_registry(dev, 0x02ff, &value);
525 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
526
527 usb_stk11xx_write_registry(dev, 0x0203, 0x0050);
528 usb_stk11xx_write_registry(dev, 0x0208, 0x0004);
529 usb_stk11xx_write_registry(dev, 0x0200, 0x0020);
530 dev_stk11xx_check_device(dev, 500);
531 usb_stk11xx_read_registry(dev, 0x0209, &value);
532
533 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
534 usb_stk11xx_write_registry(dev, 0x0200, 0x0006);
535 dev_stk11xx_check_device(dev, 500);
536
537 break;
538 }
539
540 return 0;
541}
542
543
554{
555 int value;
556
557 usb_stk11xx_read_registry(dev, 0x0104, &value);
558 usb_stk11xx_read_registry(dev, 0x0105, &value);
559 usb_stk11xx_read_registry(dev, 0x0106, &value);
560
561 usb_stk11xx_write_registry(dev, 0x0100, 0x0021);
562 usb_stk11xx_write_registry(dev, 0x0116, 0x0000);
563 usb_stk11xx_write_registry(dev, 0x0117, 0x0000);
564 usb_stk11xx_write_registry(dev, 0x0018, 0x0000);
565
566 usb_stk11xx_read_registry(dev, 0x0000, &value);
567 usb_stk11xx_write_registry(dev, 0x0000, 0x0048);
568
569 return 0;
570}
571
572
584{
586
588
590
591 usb_stk11xx_write_registry(dev, 0x0000, 0x00e0);
592 usb_stk11xx_write_registry(dev, 0x0002, 0x00f8);
593 usb_stk11xx_write_registry(dev, 0x0002, 0x0078);
594 usb_stk11xx_write_registry(dev, 0x0000, 0x0020);
595
596 usb_stk11xx_write_registry(dev, 0x0104, 0x0000);
597 usb_stk11xx_write_registry(dev, 0x0105, 0x0000);
598 usb_stk11xx_write_registry(dev, 0x0106, 0x0000);
599
601
602 return 0;
603}
604
605
617{
618 int i;
619 int retok;
620 int value;
621
622 int asize;
623 static const int values_204[] = {
624 0x1e, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
625 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12,
626 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1b, 0x1c, 0x1d,
627 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x1e, 0x25,
628 0x06, 0x25, 0x03, 0x04
629 };
630 static const int values_205[] = {
631 0x10, 0x11, 0x7b, 0x19, 0x06, 0x78, 0x10, 0x00, 0x00, 0x00,
632 0x00, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00,
633 0x04, 0x00, 0x0b, 0x04, 0x08, 0x05, 0x08, 0x01, 0x10, 0x09,
634 0x00, 0x08, 0x24, 0x05, 0x48, 0x00, 0x20, 0x01, 0x00, 0x01,
635 0x01, 0x01, 0x06, 0x78
636 };
637
638
639 asize = ARRAY_SIZE(values_204);
640
641 for(i=0; i<asize; i++) {
642 usb_stk11xx_read_registry(dev, 0x02ff, &value);
643 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
644
645 usb_stk11xx_write_registry(dev, 0x0203, 0x0050);
646
647 usb_stk11xx_write_registry(dev, 0x0204, values_204[i]);
648 usb_stk11xx_write_registry(dev, 0x0205, values_205[i]);
649 usb_stk11xx_write_registry(dev, 0x0200, 0x0001);
650
651 retok = dev_stk11xx_check_device(dev, 500);
652
653 if (retok != 1) {
654 STK_ERROR("Load default sensor settings fail !\n");
655 return -1;
656 }
657
658 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
659 }
660
661// retok = dev_stk11xx_check_device(dev, 500);
662
663 return 0;
664}
665
666
681{
682 return 0;
683}
684
685
700{
701 int value;
702
703 usb_stk11xx_write_registry(dev, 0x0200, 0x0000);
704
705 usb_stk11xx_read_registry(dev, 0x02ff, &value);
706 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
707
708 // Contrast register ?
709 usb_stk11xx_write_registry(dev, 0x0203, 0x0050);
710 usb_stk11xx_write_registry(dev, 0x0204, 0x0003);
711 usb_stk11xx_write_registry(dev, 0x0205, (dev->vsettings.contrast >> 8));
712 usb_stk11xx_write_registry(dev, 0x0200, 0x0001);
713
714 dev_stk11xx_check_device(dev, 500);
715
716 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
717 usb_stk11xx_read_registry(dev, 0x02ff, &value);
718 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
719
720 // Whiteness register ?
721 usb_stk11xx_write_registry(dev, 0x0203, 0x0050);
722 usb_stk11xx_write_registry(dev, 0x0204, 0x0004);
723 usb_stk11xx_write_registry(dev, 0x0205, (dev->vsettings.whiteness >> 8));
724 usb_stk11xx_write_registry(dev, 0x0200, 0x0001);
725
726 dev_stk11xx_check_device(dev, 500);
727
728 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
729 usb_stk11xx_read_registry(dev, 0x02ff, &value);
730 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
731
732 usb_stk11xx_write_registry(dev, 0x0203, 0x0050);
733 usb_stk11xx_write_registry(dev, 0x0208, 0x0003);
734 usb_stk11xx_write_registry(dev, 0x0208, 0x0020);
735
736 dev_stk11xx_check_device(dev, 500);
737 usb_stk11xx_read_registry(dev, 0x0209, &value);
738
739 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
740 usb_stk11xx_read_registry(dev, 0x02ff, &value);
741 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
742
743 usb_stk11xx_write_registry(dev, 0x0203, 0x0050);
744 usb_stk11xx_write_registry(dev, 0x0208, 0x0004);
745 usb_stk11xx_write_registry(dev, 0x0208, 0x0020);
746
747 dev_stk11xx_check_device(dev, 500);
748 usb_stk11xx_read_registry(dev, 0x0209, &value);
749
750 usb_stk11xx_write_registry(dev, 0x02ff, 0x0000);
751 usb_stk11xx_write_registry(dev, 0x0200, 0x0006);
752
753 dev_stk11xx_check_device(dev, 500);
754
755 STK_DEBUG("Set colour : %d\n", dev->vsettings.colour);
756 STK_DEBUG("Set contrast : %d\n", dev->vsettings.contrast);
757 STK_DEBUG("Set whiteness : %d\n", dev->vsettings.whiteness);
758 STK_DEBUG("Set brightness : %d\n", dev->vsettings.brightness);
759
760 return 0;
761}
762
763
774{
775 return 0;
776}
777
778
790{
791 int value;
792
793 usb_stk11xx_read_registry(dev, 0x0100, &value); // read 0x21
794 usb_stk11xx_write_registry(dev, 0x0100, 0x00a1);
795
796 usb_stk11xx_read_registry(dev, 0x0100, &value); // read 0xa1
797 usb_stk11xx_write_registry(dev, 0x0100, 0x00a1);
798
799 return 0;
800}
801
802
813{
815
816 return 0;
817}
818
819
831{
832 int value;
833
834 usb_stk11xx_write_registry(dev, 0x0100, 0x0021);
835 usb_stk11xx_read_registry(dev, 0x0000, &value);
836 usb_stk11xx_write_registry(dev, 0x0000, 0x0048);
837
838 return 0;
839}
840
int dev_stk0500_sensor_settings(struct usb_stk11xx *dev)
This function permits to set default sensor settings.
int dev_stk0500_init_camera(struct usb_stk11xx *dev)
This function initializes the device for the stream.
int dev_stk0500_initialize_device(struct usb_stk11xx *dev)
This function permits to initialize the device.
int dev_stk0500_camera_asleep(struct usb_stk11xx *dev)
Wake-up the camera.
int dev_stk0500_stop_stream(struct usb_stk11xx *dev)
This function sets the device to stop the stream.
int dev_stk0500_set_camera_quality(struct usb_stk11xx *dev)
This function permits to modify the settings of the camera.
int dev_stk0500_configure_device(struct usb_stk11xx *dev, int step)
This function permits to configure the device.
int dev_stk0500_set_camera_fps(struct usb_stk11xx *dev)
This function permits to modify the settings of the camera.
int dev_stk0500_start_stream(struct usb_stk11xx *dev)
This function sets the device to start the stream.
int dev_stk0500_reconf_camera(struct usb_stk11xx *dev)
Reconfigure the camera before the stream.
int dev_stk0500_camera_settings(struct usb_stk11xx *dev)
This function permits to modify the settings of the camera.
int dev_stk11xx_camera_off(struct usb_stk11xx *dev)
This function switchs off the camera.
int dev_stk11xx_check_device(struct usb_stk11xx *dev, int nbr)
This function permits to check the device in reading the register 0x0201.
Driver for Syntek USB video camera.
int usb_stk11xx_write_registry(struct usb_stk11xx *dev, __u16 index, __u16 value)
Write a 16-bits value to a 16-bits register.
int usb_stk11xx_read_registry(struct usb_stk11xx *dev, __u16 index, int *value)
Read a 16-bits value from a 16-bits register.
int usb_stk11xx_set_feature(struct usb_stk11xx *dev, int index)
Send the message SET_FEATURE and choose the interface.
Driver for Syntek USB video camera.
#define STK_ERROR(str, args...)
Definition stk11xx.h:156
#define STK_INFO(str, args...)
Definition stk11xx.h:155
#define STK_DEBUG(str, args...)
Definition stk11xx.h:158
struct stk11xx_video vsettings
Definition stk11xx.h:336