SyntekUSBVideoCamera
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 
80  dev_stk11xx_check_device(dev, 65);
81  usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
82 
84  dev_stk11xx_check_device(dev, 65);
85  usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
86 
88  dev_stk11xx_check_device(dev, 65);
89  usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
90 
92  dev_stk11xx_check_device(dev, 65);
93  usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
94 
96  dev_stk11xx_check_device(dev, 65);
97  usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
98 
100  dev_stk11xx_check_device(dev, 65);
101  usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
102 
104  dev_stk11xx_check_device(dev, 65);
105  usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
106 
108  dev_stk11xx_check_device(dev, 65);
109  usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
110 
112 
114  dev_stk11xx_check_device(dev, 65);
115  usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
116 
118  dev_stk11xx_check_device(dev, 65);
119  usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
120 
122 
124  dev_stk11xx_check_device(dev, 65);
125  usb_stk11xx_write_registry(dev, 0x0200, 0x0008);
126 
128 
130  dev_stk11xx_check_device(dev, 65);
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 
151  usb_stk11xx_set_feature(dev, 0);
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 
173 int dev_stk0500_configure_device(struct usb_stk11xx *dev, int step)
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 
587  usb_stk11xx_set_feature(dev, 0);
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_stk11xx_camera_off(struct usb_stk11xx *dev)
This function switchs off the camera.
Definition: stk11xx-dev.c:280
int dev_stk0500_sensor_settings(struct usb_stk11xx *dev)
This function permits to set default sensor settings.
int dev_stk0500_camera_settings(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_initialize_device(struct usb_stk11xx *dev)
This function permits to initialize the device.
int dev_stk0500_configure_device(struct usb_stk11xx *dev, int step)
This function permits to configure the device.
int whiteness
Definition: stk11xx.h:295
#define STK_DEBUG(str, args...)
Definition: stk11xx.h:158
#define STK_ERROR(str, args...)
Definition: stk11xx.h:156
int dev_stk0500_set_camera_quality(struct usb_stk11xx *dev)
This function permits to modify the settings of the camera.
struct stk11xx_video vsettings
Definition: stk11xx.h:336
int dev_stk11xx_check_device(struct usb_stk11xx *dev, int nbr)
This function permits to check the device in reading the register 0x0201.
Definition: stk11xx-dev.c:186
int dev_stk0500_camera_asleep(struct usb_stk11xx *dev)
Wake-up the camera.
int brightness
Definition: stk11xx.h:293
int dev_stk0500_init_camera(struct usb_stk11xx *dev)
This function initializes the device for the stream.
int usb_stk11xx_set_feature(struct usb_stk11xx *dev, int index)
Send the message SET_FEATURE and choose the interface.
Definition: stk11xx-usb.c:492
int dev_stk0500_stop_stream(struct usb_stk11xx *dev)
This function sets the device to stop the stream.
#define STK_INFO(str, args...)
Definition: stk11xx.h:155
int usb_stk11xx_write_registry(struct usb_stk11xx *dev, __u16 index, __u16 value)
Write a 16-bits value to a 16-bits register.
Definition: stk11xx-usb.c:558
int dev_stk0500_reconf_camera(struct usb_stk11xx *dev)
Reconfigure the camera before the stream.
int usb_stk11xx_read_registry(struct usb_stk11xx *dev, __u16 index, int *value)
Read a 16-bits value from a 16-bits register.
Definition: stk11xx-usb.c:590
Driver for Syntek USB video camera.
Driver for Syntek USB video camera.
int contrast
Definition: stk11xx.h:294
int dev_stk0500_set_camera_fps(struct usb_stk11xx *dev)
This function permits to modify the settings of the camera.