3 * @author Nicolas VIVIEN
7 * @brief Driver for Microdia USB video camera
9 * @note Copyright (C) Nicolas VIVIEN
13 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 2 of the License, or
18 * This program is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU General Public License for more details.
23 * You should have received a copy of the GNU General Public License
24 * along with this program; if not, write to the Free Software
25 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28 #include <linux/errno.h>
29 #include <linux/string.h>
39 int dev_microdia_init_camera(struct usb_microdia
*dev
)
44 int dev_microdia_camera_on(struct usb_microdia
*dev
)
47 struct usb_device
*udev
= dev
->udev
;
49 ret
= usb_set_interface(udev
, 0, 8);
52 UDIA_ERROR("usb_set_interface failed !\n");
57 int dev_microdia_camera_off(struct usb_microdia
*dev
)
60 struct usb_device
*udev
= dev
->udev
;
62 ret
= usb_set_interface(udev
, 0, 0);
65 UDIA_ERROR("usb_set_interface failed !\n");
70 int dev_microdia_camera_settings(struct usb_microdia
*dev
)
72 dev_microdia_camera_set_contrast(dev
);
73 dev_microdia_camera_set_brightness(dev
);
74 dev_microdia_camera_set_gamma(dev
);
75 dev_microdia_camera_set_exposure(dev
);
76 dev_microdia_camera_set_hvflip(dev
);
77 dev_microdia_camera_set_sharpness(dev
);
78 dev_microdia_camera_set_rgb_gain(dev
);
79 dev_microdia_camera_set_auto_exposure(dev
);
80 dev_microdia_camera_set_auto_whitebalance(dev
);
84 int dev_microdia_camera_set_contrast(struct usb_microdia
*dev
)
87 if (dev
&& dev
->set_contrast
)
88 ret
= dev
->set_contrast(dev
);
92 int dev_microdia_camera_set_brightness(struct usb_microdia
*dev
)
95 if (dev
&& dev
->set_brightness
)
96 ret
= dev
->set_brightness(dev
);
100 int dev_microdia_camera_set_gamma(struct usb_microdia
*dev
)
103 if (dev
&& dev
->set_gamma
)
104 ret
= dev
->set_gamma(dev
);
108 int dev_microdia_camera_set_exposure(struct usb_microdia
*dev
)
110 if (dev
->set_exposure
!= NULL
)
111 return dev
->set_exposure(dev
);
116 int dev_microdia_camera_set_hvflip(struct usb_microdia
*dev
)
119 if (dev
&& dev
->set_hvflip
)
120 ret
= dev
->set_hvflip(dev
);
125 int dev_microdia_camera_set_sharpness(struct usb_microdia
*dev
)
128 if (dev
&& dev
->set_sharpness
)
129 ret
= dev
->set_sharpness(dev
);
134 int dev_microdia_camera_set_rgb_gain(struct usb_microdia
*dev
)
137 if (dev
&& dev
->set_rgb_gain
)
138 ret
= dev
->set_rgb_gain(dev
);
143 int dev_microdia_camera_set_auto_exposure(struct usb_microdia
*dev
)
146 if (dev
&& dev
->set_auto_exposure
)
147 ret
= dev
->set_auto_exposure(dev
);
152 int dev_microdia_camera_set_auto_whitebalance(struct usb_microdia
*dev
)
155 if (dev
&& dev
->set_auto_whitebalance
)
156 ret
= dev
->set_auto_whitebalance(dev
);
163 * @brief From UsbSnoop-plugin-parsed.log
169 int dev_microdia_initialize_device(struct usb_microdia
*dev
)
173 if (dev
&& dev
->initialize
)
174 ret
= dev
->initialize(dev
);
180 * @brief From init-physical-replug.log
188 * For SN9C201 with MI1300.
191 int microdia_6240_initialize(struct usb_microdia
*dev
)
196 UDIA_INFO("Initializing camera...\n");
198 ret
= usb_microdia_control_read(dev
, 0x130d, &buf
, 1); /* URB 5 0x81 */
199 UDIA_INFO("...init: read %x, ret = %d\n", buf
, ret
);
201 ret
+= usb_microdia_control_read(dev
, 0x1040, &buf
, 1); /* URB 6 0xe4 */
202 UDIA_INFO("...init: read %x, ret = %d\n", buf
, ret
);
205 ret
+= usb_microdia_control_write(dev
, 0x10c8, &buf
, 1); /* URB 7 */
206 UDIA_INFO("...init: write %x, ret = %d\n", buf
, ret
);
208 /* Interrupt going down (URB 8) */
211 ret
+= usb_microdia_control_write(dev
, 0x1020, &buf
, 1); /* URB 9 */
212 UDIA_INFO("...init: write %x, ret = %d\n", buf
, ret
);
215 UDIA_ERROR("One or more errors occured during initialization!\n");
223 * @brief From start.log (14 jun 2008)
231 * For SN9C201 with MI1300.
234 int microdia_6240_start_stream(struct usb_microdia
*dev
)
242 __u8 buf1100
[64] = { 0x0d, 0x08, 0x08, 0x0d, 0x08, 0x08, 0x0d, 0x0d,
243 0x0d, 0x0d, 0x11, 0x0d, 0x0d, 0x11, 0x15, 0x21,
244 0x15, 0x15, 0x11, 0x11, 0x15, 0x2a, 0x1d, 0x1d,
245 0x19, 0x21, 0x32, 0x2a, 0x32, 0x32, 0x2e, 0x2a,
246 0x2e, 0x2e, 0x36, 0x3a, 0x4b, 0x43, 0x36, 0x3a,
247 0x47, 0x3a, 0x2e, 0x2e, 0x43, 0x5c, 0x43, 0x47,
248 0x4f, 0x54, 0x58, 0x58, 0x58, 0x32, 0x3f, 0x60,
249 0x64, 0x5c, 0x54, 0x64, 0x4b, 0x54, 0x58, 0x54
251 UDIA_INFO("Starting camera data stream...\n");
253 /* UNKNOWN -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
254 // URB 10 <<< GETTING SELECT_INTERFACE Interface: AlternateSetting = 8
255 // UNKNOWN -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER: */
258 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1); /* URB 12 */
262 /* UNKNOWN -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER: */
263 /* UNKNOWN -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER: */
267 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1); /* URB 14 */
272 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
277 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
282 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* cf */
288 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
293 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
298 ret
= usb_microdia_control_read(dev
, reg
, buf24
, 7); /* URB 20 << 20 00 ff 81 00 00 00 */
303 buf24
[0] = 0x80; buf24
[1] = 0xa0;
304 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 2);
309 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
314 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
318 buf24
[0] = 0x40; buf24
[1] = 0x30; buf24
[2] = 0x20; buf24
[3] = 0x10;
320 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 5);
324 buf24
[0] = 0x80; buf24
[1] = 0x5d; buf24
[2] = 0x00; buf24
[3] = 0x00;
325 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x00;
327 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 9);
332 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
337 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
341 buf24
[0] = 0x00; buf24
[1] = 0x00; buf24
[2] = 0x00;
342 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 3);
346 buf24
[0] = 0x00; buf24
[1] = 0xa0; buf24
[2] = 0x00; buf24
[3] = 0xf0;
348 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 5);
352 buf24
[0] = 0x06; buf24
[1] = 0x4c; buf24
[2] = 0x08;
353 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 3);
358 buf24
[0] = 0x00; buf24
[1] = 0x20; buf24
[2] = 0x20; buf24
[3] = 0x20;
359 buf24
[4] = 0x20; buf24
[5] = 0x00; buf24
[6] = 0x24; buf24
[7] = 0x3b;
360 buf24
[8] = 0x4f; buf24
[9] = 0x61; buf24
[10] = 0x71; buf24
[11] = 0x80;
361 buf24
[12] = 0x8f; buf24
[13] = 0x9d; buf24
[14] = 0xab; buf24
[15] = 0xb8;
363 buf24
[16] = 0xc4; buf24
[17] = 0xd1; buf24
[18] = 0xdd; buf24
[19] = 0xe9;
364 buf24
[20] = 0xf4; buf24
[21] = 0xff;
365 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 22); /* URB 30 */
370 buf24
[0] = 0x00; buf24
[1] = 0x00;
371 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 2);
376 buf24
[0] = 0x60; buf24
[1] = 0x28; buf24
[2] = 0x00; buf24
[3] = 0x08;
377 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x00;
379 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 9);
385 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
391 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
396 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x07; buf24
[3] = 0x00;
397 buf24
[4] = 0x02; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
398 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 35..90 --> */
402 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b0 */
405 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b4 */
409 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x0d; buf24
[3] = 0x00;
410 buf24
[4] = 0x01; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
411 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
415 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b0 */
418 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b4 */
422 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x0d; buf24
[3] = 0x00;
423 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
424 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
428 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b0 */
431 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b4 */
435 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x01; buf24
[3] = 0x00;
436 buf24
[4] = 0x0e; buf24
[5] = 0x00; buf24
[6] = 0x14; buf24
[7] = 0x10;
437 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
441 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* URB 45 << d0 */
444 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d4 */
448 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x03; buf24
[3] = 0x03;
449 buf24
[4] = 0xc1; buf24
[5] = 0x05; buf24
[6] = 0x01; buf24
[7] = 0x10;
450 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
454 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d0 */
457 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d4 */
461 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x05; buf24
[3] = 0x00;
462 buf24
[4] = 0x83; buf24
[5] = 0x00; buf24
[6] = 0x06; buf24
[7] = 0x10;
463 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
467 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d0 */
470 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d4 */
474 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x0d; buf24
[3] = 0x00;
475 buf24
[4] = 0x02; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
476 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
480 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b0 */
483 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b4 */
487 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x09; buf24
[3] = 0x00;
488 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
489 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
493 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d0 */
496 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d4 */
500 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x0b; buf24
[3] = 0x00;
501 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
502 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
506 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d0 */
509 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d4 */
513 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x11; buf24
[3] = 0x00;
514 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
515 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
519 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b0 */
522 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b4 */
526 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x1e; buf24
[3] = 0x80;
527 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
528 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 65 */
532 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b0 */
535 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b4 */
539 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x20; buf24
[3] = 0x11;
540 buf24
[4] = 0x05; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
541 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
545 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b0 */
548 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b4 */
552 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x2b; buf24
[3] = 0x00;
553 buf24
[4] = 0x08; buf24
[5] = 0x00; buf24
[6] = 0x10; buf24
[7] = 0x10;
554 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
558 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d0 */
561 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d4 */
565 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x2d; buf24
[3] = 0x00;
566 buf24
[4] = 0x14; buf24
[5] = 0x00; buf24
[6] = 0x08; buf24
[7] = 0x10;
567 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
571 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d0 */
574 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d4 */
578 buf24
[0] = 0x90; buf24
[1] = 0x5d; buf24
[2] = 0x33; buf24
[3] = 0x00;
579 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
580 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 77 */
584 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << 94 */
588 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x5f; buf24
[3] = 0x89;
589 buf24
[4] = 0x04; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
590 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 79 */
594 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b0 */
597 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b4 */
601 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x60; buf24
[3] = 0x00;
602 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
603 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
607 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d0 */
610 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d4 */
614 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x62; buf24
[3] = 0x04;
615 buf24
[4] = 0x98; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
616 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 85 */
620 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d0 */
623 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d4 */
627 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x68; buf24
[3] = 0x00;
628 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
629 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
633 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b0 */
636 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b4 */
641 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* URB 91 // << 5d*/
645 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
650 buf24
[0] = 0x90; buf24
[1] = 0x50; buf24
[2] = 0x00; buf24
[3] = 0x00;
651 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
652 for (i
= 93; i
<= 108; i
++) {
653 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 93..108 */
656 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << 9c */
660 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
664 buf24
[0] = 0x92; /* change only 1st value */
665 for (i
= 110; i
<= 126; i
++) {
666 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 110..126 */
669 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << 9e */
675 ret
= usb_microdia_control_read(dev
, reg
, buf24
, 5); /* << ff ff ff ff ff */
681 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
687 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
691 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
697 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
701 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
705 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
711 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
717 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1); /* URB 135..138 */
721 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
725 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
729 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
734 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x20; buf24
[3] = 0x11;
735 buf24
[4] = 0x1d; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
736 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 139 */
740 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b0 */
743 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b4 */
748 buf24
[0] = 0x02; buf24
[1] = 0x00; buf24
[2] = 0x02; buf24
[3] = 0x00;
749 buf24
[4] = 0x28; buf24
[5] = 0x3c;
750 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 6); /* URB 142 */
755 buf24
[0] = 0x00; buf24
[1] = 0xa0; buf24
[2] = 0x00; buf24
[3] = 0xf0;
757 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 5);
763 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
768 buf24
[0] = 0x00; buf24
[1] = 0x00; buf24
[2] = 0x6a; buf24
[3] = 0x50;
769 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 4);
774 buf24
[0] = 0x00; buf24
[1] = 0x00; buf24
[2] = 0x50; buf24
[3] = 0x3c;
775 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 4);
781 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
787 for (i
= 148; i
<= 149; i
++) {
788 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
795 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1); /* URB 150 */
801 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
807 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
813 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1); /* URB 153..163 */
816 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << 38 */
820 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
823 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << 39 */
827 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
830 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << 3a */
834 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
837 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << bb */
841 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
844 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << 3c */
848 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
853 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x06; buf24
[3] = 0x00;
854 buf24
[4] = 0xf2; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
855 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 164..169 */
859 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b0 */
862 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b4 */
866 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x05; buf24
[3] = 0x00;
867 buf24
[4] = 0x13; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
868 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
872 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b0 */
875 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b4 */
881 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
887 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
893 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
899 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
904 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
909 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
913 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
919 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
924 buf24
[0] = 0x00; buf24
[1] = 0x00; buf24
[2] = 0x00; buf24
[3] = 0x00;
925 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 4);
930 for (i
= 0; i
< 48; i
++)
931 buf64
[i
] = 0; /* zeroes */
932 ret
= usb_microdia_control_write(dev
, reg
, buf64
, 48); /* URB 195 */
937 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x20; buf24
[3] = 0x11;
938 buf24
[4] = 0x1d; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
939 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 200 */
943 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
946 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
952 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
958 buf24[0] = 0xb0; buf24[1] = 0x5d; buf24[2] = 0x20; buf24[3] = 0x11;
959 buf24[4] = 0x1d; buf24[5] = 0x00; buf24[6] = 0x00; buf24[7] = 0x10;
961 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 204..206 */
965 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b0 */
968 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b4 */
974 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
979 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x09; buf24
[3] = 0x03;
980 buf24
[4] = 0xe8; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
981 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 208..224 */
985 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
988 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
992 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x07; buf24
[3] = 0x00;
993 buf24
[4] = 0x03; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
994 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
998 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1001 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1005 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x2b; buf24
[3] = 0x00;
1006 buf24
[4] = 0x10; buf24
[5] = 0x00; buf24
[6] = 0x10; buf24
[7] = 0x10;
1007 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 214 */
1011 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d0 */
1014 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d4 */
1018 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x2d; buf24
[3] = 0x00;
1019 buf24
[4] = 0x10; buf24
[5] = 0x00; buf24
[6] = 0x10; buf24
[7] = 0x10;
1020 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1024 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d0 */
1027 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d4 */
1031 buf24
[0] = 0x90; buf24
[1] = 0x5d; buf24
[2] = 0x33; buf24
[3] = 0x00;
1032 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1033 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1037 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 94 */
1041 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x07; buf24
[3] = 0x00;
1042 buf24
[4] = 0x02; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1043 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1047 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1050 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1055 buf24
[0] = 0x2d; buf24
[1] = 0x2d; buf24
[2] = 0x3a; buf24
[3] = 0x05;
1056 buf24
[4] = 0x04; buf24
[5] = 0x3f;
1057 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 6);
1061 buf24
[0] = 0x28; buf24
[1] = 0xd8; buf24
[2] = 0x14; buf24
[3] = 0xec;
1062 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 4);
1066 buf24
[0] = 0x32; buf24
[1] = 0xdd; buf24
[2] = 0x2d; buf24
[3] = 0xdd;
1067 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 4);
1072 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x07; buf24
[3] = 0x00;
1073 buf24
[4] = 0x03; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1074 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 232..242 */
1078 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1081 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1085 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x2c; buf24
[3] = 0x00;
1086 buf24
[4] = 0x1d; buf24
[5] = 0x00; buf24
[6] = 0x1d; buf24
[7] = 0x10;
1087 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1091 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d0 */
1094 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d4 */
1098 buf24
[0] = 0x90; buf24
[1] = 0x5d; buf24
[2] = 0x30; buf24
[3] = 0x00;
1099 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1100 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1104 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 94 */
1108 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x07; buf24
[3] = 0x00;
1109 buf24
[4] = 0x02; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1110 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1114 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1117 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1123 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1127 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1132 ret
= usb_microdia_control_write(dev
, reg
, buf1100
, 64); /* URB 249 (see also 509/510) */
1136 reg
= 0x1140; /* 00000000: */
1137 buf64
[0] = 0x0d; buf64
[1] = 0x11; buf64
[2] = 0x11; buf64
[3] = 0x15;
1138 buf64
[4] = 0x11; buf64
[5] = 0x15; buf64
[6] = 0x26; buf64
[7] = 0x15;
1139 buf64
[8] = 0x15; buf64
[9] = 0x26; buf64
[10] = 0x54; buf64
[11] = 0x36;
1140 buf64
[12] = 0x2e; buf64
[13] = 0x36; buf64
[14] = 0x54; buf64
[15] = 0x54; /* 00000010: .. 00000030: 0x54 */
1141 for (i
= 16; i
<= 63; i
++)
1143 ret
= usb_microdia_control_write(dev
, reg
, buf64
, 64); /* URB 250 */
1149 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1153 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1159 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1165 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1); /* URB 254..257 */
1169 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1173 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1177 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1182 buf24
[0] = 0x02; buf24
[1] = 0x00; buf24
[2] = 0x02; buf24
[3] = 0x00;
1183 buf24
[4] = 0x28; buf24
[5] = 0x3c;
1184 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 6);
1189 buf24
[0] = 0x00; buf24
[1] = 0xa0; buf24
[2] = 0x00; buf24
[3] = 0xf0;
1191 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 5);
1197 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1202 buf24
[0] = 0x00; buf24
[1] = 0x00; buf24
[2] = 0x6a; buf24
[3] = 0x50;
1203 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 4);
1207 buf24
[0] = 0x00; buf24
[1] = 0x00; buf24
[2] = 0x50; buf24
[3] = 0x3c;
1208 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 4);
1214 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1219 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1224 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1229 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1234 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1239 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1244 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1248 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1253 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1258 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1263 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1269 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1); /* URB 274..284 */
1272 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 38 */
1276 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1279 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 39 */
1283 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1286 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 3a */
1290 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1293 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << bb */
1297 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1300 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 3c */
1304 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1309 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x06; buf24
[3] = 0x00;
1310 buf24
[4] = 0xf2; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1311 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 285..295 */
1315 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1318 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1322 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x05; buf24
[3] = 0x00;
1323 buf24
[4] = 0x13; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1324 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1328 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1331 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1335 buf24
[0] = 0x90; buf24
[1] = 0x5d; buf24
[2] = 0x00; buf24
[3] = 0x00;
1336 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1337 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1341 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 94 */
1345 buf24
[0] = 0xa2; buf24
[1] = 0x5d; buf24
[2] = 0x00; buf24
[3] = 0x00;
1346 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1347 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1351 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << a2 */
1354 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << a6 */
1359 ret
= usb_microdia_control_read(dev
, reg
, buf24
, 5); /* URB 296 // << 00 00 00 84 31 */
1365 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1369 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1374 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x07; buf24
[3] = 0x00;
1375 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1376 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1380 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1383 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1389 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1394 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1399 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1404 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1409 buf24
[0] = 0x98; buf24
[1] = 0xef; buf24
[2] = 0x11;
1410 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 3);
1414 /* UNKNOWN -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
1415 // URB 307 <<< GETTING SELECT_INTERFACE Interface: AlternateSetting = 0
1416 // UNKNOWN -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
1421 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1425 /* UNKNOWN -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
1426 // URB 310 <<< GETTING SELECT_INTERFACE Interface: AlternateSetting = 8
1427 // UNKNOWN -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
1429 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1); /* URB 312 */
1433 /* UNKNOWN -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
1434 // UNKNOWN -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER:
1439 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1); /* URB 314 */
1444 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1449 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1453 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << ef */
1457 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1462 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1467 ret
= usb_microdia_control_read(dev
, reg
, buf24
, 7); /* URB 320 // << a0 00 ff 81 00 00 00 */
1471 buf24
[0] = 0x80; buf24
[1] = 0xa0;
1472 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 2);
1478 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1483 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1488 buf24
[0] = 0x40; buf24
[1] = 0x30; buf24
[2] = 0x20; buf24
[3] = 0x10;
1490 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 5);
1495 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x07; buf24
[3] = 0x00;
1496 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1498 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 9);
1505 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1510 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1515 buf24
[0] = 0x00; buf24
[1] = 0x00; buf24
[2] = 0x00;
1516 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 3);
1521 buf24
[0] = 0x00; buf24
[1] = 0xa0; buf24
[2] = 0x00; buf24
[3] = 0xf0;
1523 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 5);
1528 buf24
[0] = 0x06; buf24
[1] = 0x4c; buf24
[2] = 0x08;
1529 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 3);
1535 buf24
[0] = 0x00; buf24
[1] = 0x20; buf24
[2] = 0x20; buf24
[3] = 0x20;
1536 buf24
[4] = 0x20; buf24
[5] = 0x00; buf24
[6] = 0x24; buf24
[7] = 0x3b;
1537 buf24
[8] = 0x4f; buf24
[9] = 0x61; buf24
[10] = 0x71; buf24
[11] = 0x80;
1538 buf24
[12] = 0x8f; buf24
[13] = 0x9d; buf24
[14] = 0xab; buf24
[15] = 0xb8;
1540 buf24
[16] = 0xc4; buf24
[17] = 0xd1; buf24
[18] = 0xdd; buf24
[19] = 0xe9;
1541 buf24
[20] = 0xf4; buf24
[21] = 0xff;
1542 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 22); /* URB 330 */
1547 buf24
[0] = 0x00; buf24
[1] = 0x00;
1548 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 2);
1553 buf24
[0] = 0x60; buf24
[1] = 0x28; buf24
[2] = 0x00; buf24
[3] = 0x08;
1554 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x00;
1556 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 9);
1562 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1567 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1572 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x07; buf24
[3] = 0x00;
1573 buf24
[4] = 0x02; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1574 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 335..390 */
1578 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1581 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1585 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x0d; buf24
[3] = 0x00;
1586 buf24
[4] = 0x01; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1587 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1591 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1594 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1598 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x0d; buf24
[3] = 0x00;
1599 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1600 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1604 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1607 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1611 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x01; buf24
[3] = 0x00;
1612 buf24
[4] = 0x0e; buf24
[5] = 0x00; buf24
[6] = 0x14; buf24
[7] = 0x10;
1613 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 344 */
1617 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d0 */
1620 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d4 */
1624 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x03; buf24
[3] = 0x03;
1625 buf24
[4] = 0xc1; buf24
[5] = 0x05; buf24
[6] = 0x01; buf24
[7] = 0x10;
1626 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1630 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d0 */
1633 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d4 */
1637 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x05; buf24
[3] = 0x00;
1638 buf24
[4] = 0x83; buf24
[5] = 0x00; buf24
[6] = 0x06; buf24
[7] = 0x10;
1639 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1643 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d0 */
1646 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d4 */
1650 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x0d; buf24
[3] = 0x00;
1651 buf24
[4] = 0x02; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1652 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1656 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1659 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1663 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x09; buf24
[3] = 0x00;
1664 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1665 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 356 */
1669 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d0 */
1672 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d4 */
1676 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x0b; buf24
[3] = 0x00;
1677 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1678 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1682 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d0 */
1685 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d4 */
1689 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x11; buf24
[3] = 0x00;
1690 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1691 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1695 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1698 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1702 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x1e; buf24
[3] = 0x80;
1703 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1704 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 365 */
1708 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1711 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1715 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x20; buf24
[3] = 0x11;
1716 buf24
[4] = 0x05; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1717 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1721 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1724 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1728 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x2b; buf24
[3] = 0x00;
1729 buf24
[4] = 0x08; buf24
[5] = 0x00; buf24
[6] = 0x10; buf24
[7] = 0x10;
1730 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1734 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d0 */
1737 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d4 */
1741 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x2d; buf24
[3] = 0x00;
1742 buf24
[4] = 0x14; buf24
[5] = 0x00; buf24
[6] = 0x08; buf24
[7] = 0x10;
1743 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1747 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d0 */
1750 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d4 */
1754 buf24
[0] = 0x90; buf24
[1] = 0x5d; buf24
[2] = 0x33; buf24
[3] = 0x00;
1755 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1756 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 377 */
1760 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 94 */
1764 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x5f; buf24
[3] = 0x89;
1765 buf24
[4] = 0x04; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1766 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1770 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b0 */
1773 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b4 */
1777 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x60; buf24
[3] = 0x00;
1778 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1779 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1783 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d0 */
1786 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d4 */
1790 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x62; buf24
[3] = 0x04;
1791 buf24
[4] = 0x98; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1792 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 385 */
1796 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d0 */
1799 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << d4 */
1803 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x68; buf24
[3] = 0x00;
1804 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1805 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
1809 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b0 */
1812 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* << b4 */
1818 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1); /* URB 391 */
1822 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1828 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1832 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1836 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1842 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1848 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1); /* URB 397..400 */
1852 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1856 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1860 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1865 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x20; buf24
[3] = 0x11;
1866 buf24
[4] = 0x1d; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1867 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 401 */
1871 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1874 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1879 buf24
[0] = 0x02; buf24
[1] = 0x00; buf24
[2] = 0x02; buf24
[3] = 0x00;
1880 buf24
[4] = 0x28; buf24
[5] = 0x3c;
1881 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 6);
1885 buf24
[0] = 0x00; buf24
[1] = 0xa0; buf24
[2] = 0x00; buf24
[3] = 0xf0;
1887 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 5);
1893 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1898 buf24
[0] = 0x00; buf24
[1] = 0x00; buf24
[2] = 0x6a; buf24
[3] = 0x50;
1899 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 4);
1903 buf24
[0] = 0x00; buf24
[1] = 0x00; buf24
[2] = 0x50; buf24
[3] = 0x3c;
1904 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 4);
1910 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1916 for (i
= 410; i
<= 411; i
++) {
1917 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1924 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1929 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1934 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1940 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1); /* URB 415..425 */
1943 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 38 */
1947 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1950 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 39 */
1954 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1957 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 3a */
1961 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1964 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << bb */
1968 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1971 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 3c */
1975 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
1981 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x06; buf24
[3] = 0x00;
1982 buf24
[4] = 0xf2; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1983 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 426..431 */
1987 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
1990 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
1994 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x05; buf24
[3] = 0x00;
1995 buf24
[4] = 0x13; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
1996 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
2000 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
2003 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
2009 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2015 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2021 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2027 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2032 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2038 for (i
= 453; i
< 454; i
++) {
2039 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2046 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2051 buf24
[0] = 0x00; buf24
[1] = 0x00; buf24
[2] = 0x00; buf24
[3] = 0x00;
2052 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 4);
2057 for (i
= 0; i
< 48; i
++)
2058 buf64
[i
] = 0; /* // zeroes */
2059 ret
= usb_microdia_control_write(dev
, reg
, buf64
, 48); /* URB 457 */
2064 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x20; buf24
[3] = 0x11;
2065 buf24
[4] = 0x1d; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
2066 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 462 */
2070 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
2073 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
2079 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2084 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x20; buf24
[3] = 0x11;
2085 buf24
[4] = 0x1d; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
2086 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 466 */
2090 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
2093 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
2099 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2104 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x07; buf24
[3] = 0x00;
2105 buf24
[4] = 0x03; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
2106 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 470..483 */
2110 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
2113 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
2117 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x2b; buf24
[3] = 0x00;
2118 buf24
[4] = 0x10; buf24
[5] = 0x00; buf24
[6] = 0x10; buf24
[7] = 0x10;
2119 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
2123 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d0 */
2126 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d4 */
2130 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x2d; buf24
[3] = 0x00;
2131 buf24
[4] = 0x10; buf24
[5] = 0x00; buf24
[6] = 0x10; buf24
[7] = 0x10;
2132 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
2136 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d0 */
2139 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d4 */
2143 buf24
[0] = 0x90; buf24
[1] = 0x5d; buf24
[2] = 0x33; buf24
[3] = 0x00;
2144 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
2145 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 479 */
2149 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 94 */
2153 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x07; buf24
[3] = 0x00;
2154 buf24
[4] = 0x02; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
2155 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
2159 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
2162 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
2167 buf24
[0] = 0x2d; buf24
[1] = 0x2d; buf24
[2] = 0x3a; buf24
[3] = 0x05;
2168 buf24
[4] = 0x04; buf24
[5] = 0x3f;
2169 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 6);
2173 buf24
[0] = 0x28; buf24
[1] = 0xd8; buf24
[2] = 0x14; buf24
[3] = 0xec;
2174 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 4);
2178 buf24
[0] = 0x32; buf24
[1] = 0xdd; buf24
[2] = 0x2d; buf24
[3] = 0xdd;
2179 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 4);
2184 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x07; buf24
[3] = 0x00;
2185 buf24
[4] = 0x03; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
2186 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 491..502 */
2190 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
2193 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
2197 buf24
[0] = 0xd0; buf24
[1] = 0x5d; buf24
[2] = 0x2c; buf24
[3] = 0x00;
2198 buf24
[4] = 0x1d; buf24
[5] = 0x00; buf24
[6] = 0x1d; buf24
[7] = 0x10;
2199 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
2203 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 495: d0 */
2206 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 496: d0 */
2209 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << d4 */
2213 buf24
[0] = 0x90; buf24
[1] = 0x5d; buf24
[2] = 0x30; buf24
[3] = 0x00;
2214 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
2215 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
2219 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 94 */
2223 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x07; buf24
[3] = 0x00;
2224 buf24
[4] = 0x02; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
2225 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
2229 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
2232 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
2238 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2242 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2247 ret
= usb_microdia_control_write(dev
, reg
, buf1100
, 64); /* URB 509 (see also 249/250) */
2253 buf64
[0] = 0x0d; buf64
[1] = 0x11; buf64
[2] = 0x11; buf64
[3] = 0x15;
2254 buf64
[4] = 0x11; buf64
[5] = 0x15; buf64
[6] = 0x26; buf64
[7] = 0x15;
2255 buf64
[8] = 0x15; buf64
[9] = 0x26; buf64
[10] = 0x54; buf64
[11] = 0x36;
2256 buf64
[12] = 0x2e; buf64
[13] = 0x36; buf64
[14] = 0x54; buf64
[15] = 0x54;
2257 /* 00000010: .. 00000030: 0x54 */
2258 for (i
= 16; i
<= 63; i
++)
2260 ret
= usb_microdia_control_write(dev
, reg
, buf64
, 64); /* URB 510 */
2266 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2270 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2276 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2282 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1); /* URB 514..517 */
2286 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2290 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2294 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2299 buf24
[0] = 0x02; buf24
[1] = 0x00; buf24
[2] = 0x02; buf24
[3] = 0x00;
2300 buf24
[4] = 0x28; buf24
[5] = 0x3c;
2301 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 6);
2304 buf24
[0] = 0x00; buf24
[1] = 0xa0; buf24
[2] = 0x00; buf24
[3] = 0xf0;
2306 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 5);
2310 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2315 buf24
[0] = 0x00; buf24
[1] = 0x00; buf24
[2] = 0x6a; buf24
[3] = 0x50;
2316 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 4);
2319 buf24
[0] = 0x00; buf24
[1] = 0x00; buf24
[2] = 0x50; buf24
[3] = 0x3c;
2320 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 4);
2324 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2329 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2334 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2339 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2344 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2349 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2355 for (i
= 529; i
<= 530; i
++) {
2356 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2363 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2368 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2373 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2379 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1); /* URB 534..544 */
2382 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 38 */
2386 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2389 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 39 */
2393 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2396 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 3a */
2400 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2403 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << bb */
2407 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2410 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 3c */
2414 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1);
2419 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x06; buf24
[3] = 0x00;
2420 buf24
[4] = 0xf2; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
2421 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8); /* URB 545..555 */
2425 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
2428 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
2432 buf24
[0] = 0xb0; buf24
[1] = 0x5d; buf24
[2] = 0x05; buf24
[3] = 0x00;
2433 buf24
[4] = 0x13; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
2434 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
2438 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b0 */
2441 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << b4 */
2445 buf24
[0] = 0x90; buf24
[1] = 0x5d; buf24
[2] = 0x00; buf24
[3] = 0x00;
2446 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
2447 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
2451 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << 94 */
2455 buf24
[0] = 0xa2; buf24
[1] = 0x5d; buf24
[2] = 0x00; buf24
[3] = 0x00;
2456 buf24
[4] = 0x00; buf24
[5] = 0x00; buf24
[6] = 0x00; buf24
[7] = 0x10;
2457 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 8);
2461 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << a2 */
2464 ret
= usb_microdia_control_read(dev
, reg
, &buf
, 1); /* // << a6 */
2469 buf24
[0] = 0x00; buf24
[1] = 0x00; buf24
[2] = 0x00; buf24
[3] = 0x84;
2471 ret
= usb_microdia_control_write(dev
, reg
, buf24
, 5);
2477 ret
= usb_microdia_control_write(dev
, reg
, &buf
, 1); /* URB 557 */
2481 /* UNKNOWN -- URB_FUNCTION_RESET_PIPE:
2482 // UNKNOWN -- URB_FUNCTION_RESET_PIPE:
2483 // UNKNOWN -- URB_FUNCTION_GET_CURRENT_FRAME_NUMBER:
2484 // UNKNOWN -- URB_FUNCTION_GET_CURRENT_FRAME_NUMBER:
2485 // URB 560 >>> SENDING ISO REQUEST
2487 UDIA_INFO("...start function completed without errors.\n");
2490 UDIA_ERROR("r/w in bridge register %x failed (%d)!\n", reg
, ret
);
2495 * @brief From stop-close-amcap.log
2503 * For SN9C201 with MI1300. Comments from parser-usbsnoop(updated_13Mar2008).pl output
2506 int microdia_6240_stop_stream(struct usb_microdia
*dev
)
2511 UDIA_INFO("Stopping camera...\n");
2514 ret
= usb_microdia_control_write(dev
, 0x1061, buf
, 1); /* URB 25319 */
2515 UDIA_INFO("...stop: write %x, ret = %d\n", buf
[0], ret
);
2517 buf
[0] = 0xb0; buf
[1] = 0x5d; buf
[2] = 0x07; buf
[3] = 0x00;
2518 buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
2519 ret
+= usb_microdia_control_write(dev
, 0x10c0, buf
, 8); /* URB 25320 */
2520 UDIA_INFO("...stop: write buf[8], ret = %d\n", ret
);
2522 ret
+= usb_microdia_control_read(dev
, 0x10c0, buf
, 1); /* URB 25321 << b0 */
2523 UDIA_INFO("...stop: read %x, ret = %d\n", buf
[0], ret
);
2525 ret
+= usb_microdia_control_read(dev
, 0x10c0, buf
, 1); /* URB 25322 << b4 */
2526 UDIA_INFO("...stop: read %x, ret = %d\n", buf
[0], ret
);
2529 ret
+= usb_microdia_control_write(dev
, 0x1000, buf
, 1); /* URB 25323 */
2530 UDIA_INFO("...stop: write %x, ret = %d\n", buf
[0], ret
);
2533 ret
+= usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 25324 */
2534 UDIA_INFO("...stop: write %x, ret = %d\n", buf
[0], ret
);
2537 ret
+= usb_microdia_control_write(dev
, 0x1007, buf
, 1); /* URB 25325 */
2538 UDIA_INFO("...stop: write %x, ret = %d\n", buf
[0], ret
);
2541 ret
+= usb_microdia_control_write(dev
, 0x1006, buf
, 1); /* URB 25326 */
2542 UDIA_INFO("...stop: write %x, ret = %d\n", buf
[0], ret
);
2544 buf
[0] = 0x98; buf
[1] = 0xef; buf
[2] = 0x11;
2545 ret
+= usb_microdia_control_write(dev
, 0x1000, buf
, 3); /* URB 25327 */
2546 UDIA_INFO("...stop: write buf[3], ret = %d\n", ret
);
2548 /* UNKNOWN -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER: (URB 5009)
2549 // URB 25328 <<< GETTING SELECT_INTERFACE Interface: AlternateSetting = 0
2550 // UNKNOWN -- URB_FUNCTION_BULK_OR_INTERRUPT_TRANSFER: (URB 25329)
2554 ret
+= usb_microdia_control_write(dev
, 0x1066, buf
, 1); /* URB 25330 */
2555 UDIA_INFO("...stop: write %x, ret = %d\n", buf
[0], ret
);
2558 UDIA_ERROR("One ore more errors occured during stop sequence !\n");
2566 * @brief From init.sequence.log
2574 * For SN9C201 with SOI968.
2575 * Tests showed this function is actually unnecessary.
2576 * Nevertheless the reads may give us valuable values we don't know about yet.
2578 int microdia_624e_initialize(struct usb_microdia
*dev
)
2582 usb_microdia_control_read(dev
, 0x130d, &buf
, 1);
2583 usb_microdia_control_read(dev
, 0x1040, &buf
, 1);
2589 * @brief From UsbSnoop-plugin-parsed.log
2595 int microdia_624f_initialize(struct usb_microdia
*dev
)
2597 /* Do nothing here */
2602 * @brief From UsbSnoop-plugin-parsed.log
2608 int microdia_6260_initialize(struct usb_microdia
*dev
)
2612 usb_microdia_control_read(dev
, 0x130d, &buf
, 1);
2613 usb_microdia_control_read(dev
, 0x1040, &buf
, 1);
2615 usb_microdia_control_write(dev
, 0x10c8, &buf
, 1);
2616 usb_microdia_control_read(dev
, 0x100a, &buf
, 1);
2618 usb_microdia_control_write(dev
, 0x100a, &buf
, 1);
2619 usb_microdia_control_read(dev
, 0x100b, &buf
, 1);
2621 usb_microdia_control_write(dev
, 0x100b, &buf
, 1);
2622 usb_microdia_control_read(dev
, 0x1001, &buf
, 1);
2624 usb_microdia_control_write(dev
, 0x1001, &buf
, 1);
2625 usb_microdia_control_read(dev
, 0x1040, &buf
, 1);
2627 usb_microdia_control_write(dev
, 0x1040, &buf
, 1);
2628 usb_microdia_control_read(dev
, 0x1045, &buf
, 1);
2630 usb_microdia_control_write(dev
, 0x1045, &buf
, 1);
2631 usb_microdia_control_read(dev
, 0x1046, &buf
, 1);
2633 usb_microdia_control_write(dev
, 0x1046, &buf
, 1);
2635 usb_microdia_control_write(dev
, 0x1045, &buf
, 1);
2637 usb_microdia_control_write(dev
, 0x1040, &buf
, 1);
2639 usb_microdia_control_write(dev
, 0x1020, &buf
, 1);
2645 * @brief From 6 init-logs
2649 * @returns 0 (ok) or -1 (error)
2653 * Windows driver versions: 5.5.8.12 and 5.7.23.000
2654 * Windows versions: 2000 and XP
2655 * USB-Logger: SniffUSB 1.8 and 2.0, USBTrace 2.0, SnoopyPro
2657 * Comments behind read oprations contain HEX-values that appeared in the logs
2659 int microdia_6270_initialize(struct usb_microdia
*dev
)
2671 ret
+= usb_microdia_control_read(dev
, 0x130d, buf
, 1); /* URB 5 0x81,0x85,0x04,0x8b,0x02,... */
2673 ret
+= usb_microdia_control_read(dev
, 0x1040, buf
, 1); /* URB 6 0xe4,0xc4,0xa4,0x44,... */
2676 * THE OLD DRIVER 5.5.8.12 DOES AN ADDITIONAL WRITE HERE:
2678 * usb_microdia_control_write(dev, 0x10c8, buf, 1);
2681 ret
+= usb_microdia_control_read(dev
, 0x118a, buf
, 1); /* URB 7 0x05,0x7b,0x01,0x04,... */
2683 ret
+= usb_microdia_control_read(dev
, 0x0395, buf_0395
, 1); /* URB 8 0xc2,0x82,0x38,0x98,0x04,... */
2684 /* => this value will be rewritten to 0x118a and 0x0395 later (URBs 81+82) */
2687 ret
+= usb_microdia_control_write(dev
, 0x118a, buf
, 1); /* URB 9 */
2689 ret
+= usb_microdia_control_write(dev
, 0x0395, buf
, 1); /* URB 10 */
2691 ret
+= usb_microdia_control_read(dev
, 0x11b8, buf_11b8
, 1); /* URB 11 0xa0,0x00,0x24,... */
2692 /* => this value will be rewritten to 0x11b8 later (URB 83) */
2695 ret
+= usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 12 */
2697 ret
+= usb_microdia_control_read(dev
, 0x1000, buf_1000
, 5); /* URB 13 0x30 0xCF 0x00 0x03 (0x02 or 0x00) */
2698 /* => these values will be rewritten to 0x1000 later (URB 84) */
2700 buf
[0] = 0x70; buf
[1] = 0x00; buf
[2] = 0x18; buf
[3] = 0x00; buf
[4] = 0x00;
2701 ret
+= usb_microdia_control_write(dev
, 0x1000, buf
, 5); /* URB 14 */
2703 ret
+= usb_microdia_control_read(dev
, 0x1060, buf_1060
, 2); /* URB 15 0x08 0x00 (always ???) */
2704 /* => this value will be rewritten to 0x1060 later (URB 85) */
2706 buf
[0] = 0x00; buf
[1] = 0x03;
2707 ret
+= usb_microdia_control_write(dev
, 0x1060, buf
, 2); /* URB 16 */
2709 /* initialize I2C registers to avoid getting no ACK at first I2C operation: */
2710 ret
+= sn9c20x_initialize_i2c(dev
, SN9C20X_I2C_2WIRE
, MT9V011_I2C_SLAVE_ADDRESS
);
2712 /* enable I2C communication (bit 0) */
2713 buf
[0] = 0x21; /* THE OLD DRIVER 5.5.8.12 WRITES 0x5d */
2714 ret
+= usb_microdia_control_write(dev
, 0x10c8, buf
, 1); /* URB 17 */
2716 /* probe sensor model: */
2717 retSP
= mt9vx11_sensor_probe(dev
); /* substitutes URBs 18-48 */
2718 if ((retSP
== 0) && (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
))
2719 /* switch (back) to IFP address space: */
2720 retASS
= mt9v111_select_address_space(dev
, MT9V111_ADDRESSSPACE_IFP
);
2722 ret
+= usb_microdia_control_write(dev
, 0x118a, buf_0395
, 1); /* URB 81 => write value read with URB 8 */
2724 ret
+= usb_microdia_control_write(dev
, 0x0395, buf_0395
, 1); /* URB 82 => write value read with URB 8 */
2726 ret
+= usb_microdia_control_write(dev
, 0x11b8, buf_11b8
, 1); /* URB 83 => write value read with URB 11 */
2728 ret
+= usb_microdia_control_write(dev
, 0x1000, buf_1000
, 5); /* URB 84 => write value read with URB 13 */
2730 ret
+= usb_microdia_control_write(dev
, 0x1060, buf_1060
, 2); /* URB 85 => write value read with URB 15; (always 08 00 ???) */
2732 /* USB-interrupt-message: doesn't work yet (returns error -110) */
2733 /* usb_interrupt_msg(dev->udev, usb_rcvintpipe(dev->udev, dev->int_in_endpointAddr), dev->int_in_buffer, dev->int_in_size, &actual, 1000); // URB 86 */
2736 * THE OLD DRIVER 5.5.8.12 DOES AN ADDITIONAL WRITE HERE:
2738 * usb_microdia_control_write(dev, 0x1020, wbuf, 1);
2741 if ((retSP
!= 0) || (retASS
!= 0) || (ret
< 33)) {
2743 UDIA_INFO("One ore more errors occured during initialization !\n");
2752 * @brief From UsbSnoop-plugin-parsed.log
2758 int microdia_627b_initialize(struct usb_microdia
*dev
)
2771 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1); /* URB 5 */
2775 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1); /* URB 6 */
2780 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1); /* URB 7 */
2784 ret
= usb_microdia_control_read(dev
, reg
, reg0395
, 1); /* URB 8 */
2790 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 9 */
2794 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 10 */
2799 ret
= usb_microdia_control_read(dev
, reg
, reg11b8
, 1); /* URB 11 */
2805 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 12 */
2809 ret
= usb_microdia_control_read(dev
, reg
, reg1000
, 5); /* URB 13 */
2814 buf
[0] = 0x70; buf
[1] = 0x00; buf
[2] = 0x18; buf
[3] = 0x00; buf
[4] = 0x00;
2815 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5); /* URB 14 */
2820 ret
= usb_microdia_control_read(dev
, reg
, reg1060
, 2); /* URB 15 */
2825 buf
[0] = 0x00; buf
[1] = 0x03;
2826 ret
= usb_microdia_control_write(dev
, reg
, buf
, 2); /* URB 16 */
2832 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 17 */
2836 retI2C
= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 1,
2837 OV7660_CTL_PID
, dev
->sensor_flags
, buf
); /* URBs 18-29 */
2842 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 30 */
2846 retI2C
= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 1,
2847 OV7660_CTL_PID
, dev
->sensor_flags
, buf
); /* URBs 31-35 */
2850 UDIA_ERROR("Read of sensor register 0x0a failed.");
2854 ret
= usb_microdia_control_write(dev
, reg
, reg0395
, 1); /* URB 36 */
2858 ret
= usb_microdia_control_write(dev
, reg
, reg0395
, 1); /* URB 37 */
2864 ret
= usb_microdia_control_write(dev
, reg
, reg11b8
, 1); /* URB 38 */
2869 buf
[0] = 0x30; buf
[1] = 0xcf; buf
[2] = 0x00; buf
[3] = 0x03; buf
[4] = 0x02;
2870 ret
= usb_microdia_control_write(dev
, reg
, reg1000
, 5); /* URB 39 */
2875 buf
[0] = 0x08; buf
[1] = 0x00;
2876 ret
= usb_microdia_control_write(dev
, reg
, reg1060
, 2); /* URB 40 */
2882 ret = usb_interrupt_msg(dev->udev, 0x00000083, buf, 0x0000001, &actual, 1000);
2887 UDIA_ERROR("r/w in bridge register %x failed (%d)!\n", reg
, ret
);
2892 * @brief From init-start-stop-log (made by VÃctor M. Hernández Rocamora)
2896 * @returns 0 (ok) or -1 (error)
2900 * USB-Logger: SniffUSB 2.0
2902 * Comments behind read oprations contain HEX-values that appeared in the log
2904 int microdia_627f_initialize(struct usb_microdia
*dev
)
2909 ret
+= usb_microdia_control_read(dev
, 0x130d, buf
, 1); /* URB 5 0x81 */
2911 ret
+= usb_microdia_control_read(dev
, 0x1040, buf
, 1); /* URB 6 0xe4 */
2914 ret
+= usb_microdia_control_write(dev
, 0x10c8, buf
, 1); /* URB 7 */
2917 ret
+= usb_microdia_control_write(dev
, 0x1020, buf
, 1); /* URB 8 */
2919 ret
+= usb_microdia_control_read(dev
, 0x1045, buf
, 1); /* URB 9 0x0f */
2922 ret
+= usb_microdia_control_write(dev
, 0x1045, buf
, 1); /* URB 10 */
2924 ret
+= usb_microdia_control_read(dev
, 0x1045, buf
, 1); /* URB 11 0x1f */
2927 ret
+= usb_microdia_control_write(dev
, 0x1045, buf
, 1); /* URB 12 */
2929 ret
+= usb_microdia_control_read(dev
, 0x1045, buf
, 1); /* URB 13 0x0f */
2932 ret
+= usb_microdia_control_write(dev
, 0x1045, buf
, 1); /* URB 14 */
2935 UDIA_INFO("One ore more errors occured during initialization !\n");
2942 * @brief From UsbSnoop-plugin-parsed.log
2946 * @returns 0 (OK) or <0 (Error)
2948 * @author Vincent, Kuzja
2950 int microdia_6288_initialize(struct usb_microdia
*dev
)
2958 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
2963 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
2972 UDIA_ERROR("r/w in Register %x failed (%d)!\n", reg
, ret
);
2976 int dev_microdia_start_stream(struct usb_microdia
*dev
)
2979 if (dev
&& dev
->start_stream
)
2980 ret
= dev
->start_stream(dev
);
2986 * @brief From start.htm
2994 * For SN9C201 with MI1310.
2995 * This function has not been tested yet.
2997 int microdia_6242_start_stream(struct usb_microdia
*dev
)
3003 0x01, 0x18, 0x00, 0x30, 0x00, 0x09, 0x00, 0xed,
3004 0x0f, 0xda, 0x0f, 0x3a, 0x00, 0x3a, 0x00, 0xd0,
3005 0x0f, 0xf7, 0x0f, 0x00, 0x00, 0x00, 0x60, 0x0a};
3008 0x02, 0x00, 0x02, 0x00, 0x50, 0x78, 0x00, 0x00,
3012 0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x24, 0x3b,
3013 0x4f, 0x61, 0x71, 0x80, 0x8f, 0x9d, 0xab, 0xb8,
3014 0xc4, 0xd1, 0xdd, 0xe9, 0xf4, 0xff};
3016 __u8 qtable1
[64] = {
3017 0x0d, 0x08, 0x08, 0x0d, 0x08, 0x08, 0x0d, 0x0d,
3018 0x0d, 0x0d, 0x11, 0x0d, 0x0d, 0x11, 0x15, 0x21,
3019 0x15, 0x15, 0x11, 0x11, 0x15, 0x2a, 0x1d, 0x1d,
3020 0x19, 0x21, 0x32, 0x2a, 0x32, 0x32, 0x2e, 0x2a,
3021 0x2e, 0x2e, 0x36, 0x3a, 0x4b, 0x43, 0x36, 0x3a,
3022 0x47, 0x3a, 0x2e, 0x2e, 0x43, 0x5c, 0x43, 0x47,
3023 0x4f, 0x54, 0x58, 0x58, 0x58, 0x32, 0x3f, 0x60,
3024 0x64, 0x5c, 0x54, 0x64, 0x4b, 0x54, 0x58, 0x54};
3026 __u8 qtable2
[64] = {
3027 0x0d, 0x11, 0x11, 0x15, 0x11, 0x15, 0x26, 0x15,
3028 0x15, 0x26, 0x54, 0x36, 0x2e, 0x36, 0x54, 0x54,
3029 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
3030 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
3031 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
3032 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
3033 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
3034 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54};
3036 __u8 first10c0
[7][3] = {
3046 __u8 second10c0a
[2][5] = {
3047 {0x01, 0x00, 0x0e, 0x00, 0x14},
3048 {0x03, 0x03, 0xc4, 0x05, 0x14}
3051 __u8 second10c0b
[3] =
3054 __u8 third10c0
[4][3] = {
3061 __u8 fourth10c0a
[3][3] = {
3067 __u8 fourth10c0b
[2][5] = {
3068 {0x2b, 0x01, 0x88, 0x01, 0x88},
3069 {0x2d, 0x01, 0x88, 0x01, 0x88}
3072 __u8 fifth10c0
[4][3] = {
3078 /* interrupt down */
3081 usb_microdia_control_write(dev
, 0x1066, buf
, 1); /* URB 1 */
3084 /* interrupt down */
3087 usb_microdia_control_write(dev
, 0x1007, buf
, 1);
3090 usb_microdia_control_write(dev
, 0x1006, buf
, 1);
3093 usb_microdia_control_write(dev
, 0x1000, buf
, 1);
3096 usb_microdia_control_write(dev
, 0x1001, buf
, 1);
3099 usb_microdia_control_write(dev
, 0x1002, buf
, 1);
3102 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
3105 usb_microdia_control_write(dev
, 0x1020, buf
, 1);
3107 buf
[0] = 0x40; buf
[1] = 0x30; buf
[2] = 0x20;
3108 buf
[3] = 0x10; buf
[4] = 0x08;
3109 usb_microdia_control_write(dev
, 0x1067, buf
, 5);
3111 buf
[0] = 0xb0; buf
[1] = dev
->sensor_slave_address
; buf
[2] = 0x0d;
3112 buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00;
3113 buf
[6] = 0x00; buf
[7] = 0x10; buf
[8] = 0x03;
3114 usb_microdia_control_write(dev
, 0x10c0, buf
, 9);
3116 usb_microdia_control_write(dev
, 0x10e0, urb10
, 24); /* URB 10 */
3118 buf
[0] = 0x00; buf
[1] = 0x00; buf
[3] = 0x00;
3119 usb_microdia_control_write(dev
, 0x10f8, buf
, 3);
3121 buf
[0] = 0x00; buf
[1] = 0x40; buf
[2] = 0x00;
3122 buf
[3] = 0xe0; buf
[4] = 0x03;
3123 usb_microdia_control_write(dev
, 0x10fb, buf
, 5);
3125 usb_microdia_control_write(dev
, 0x1180, urb13
, 11);
3127 usb_microdia_control_write(dev
, 0x118b, urb14
, 22);
3129 buf
[0] = 0x00; buf
[1] = 0x00;
3130 usb_microdia_control_write(dev
, 0x11a1, buf
, 2);
3132 buf
[0] = 0x60; buf
[1] = 0x20; buf
[2] = 0x00;
3133 buf
[3] = 0x08; buf
[4] = 0x00; buf
[5] = 0x00;
3134 buf
[6] = 0x00; buf
[7] = 0x00; buf
[8] = 0x00;
3135 usb_microdia_control_write(dev
, 0x11b7, buf
, 9);
3138 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3141 usb_microdia_control_write(dev
, 0x1000, buf
, 1);
3143 for (i
= 0; i
< 7; i
++)
3144 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
3145 first10c0
[i
][0], dev
->sensor_flags
, &first10c0
[i
][1]); /* URB 9-48 */
3148 usb_microdia_control_write(dev
, 0x1007, buf
, 1);
3151 usb_microdia_control_write(dev
, 0x1006, buf
, 1);
3154 usb_microdia_control_write(dev
, 0x10e0, buf
, 1); /* URB 50 */
3157 usb_microdia_control_write(dev
, 0x10e0, buf
, 1);
3160 usb_microdia_control_write(dev
, 0x1001, buf
, 1);
3163 usb_microdia_control_write(dev
, 0x1001, buf
, 1);
3166 usb_microdia_control_write(dev
, 0x1001, buf
, 1);
3169 usb_microdia_control_write(dev
, 0x1189, buf
, 1);
3172 usb_microdia_control_write(dev
, 0x11bc, buf
, 1);
3175 usb_microdia_control_write(dev
, 0x11bd, buf
, 1);
3178 usb_microdia_control_write(dev
, 0x11be, buf
, 1);
3181 usb_microdia_control_write(dev
, 0x11bf, buf
, 1);
3183 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
3184 second10c0a
[0][0], dev
->sensor_flags
, &second10c0a
[0][1]);
3186 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
3187 second10c0a
[1][0], dev
->sensor_flags
, &second10c0a
[1][1]);
3189 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0,
3190 0x09, dev
->sensor_flags
, NULL
);
3192 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
3193 second10c0b
[0], dev
->sensor_flags
, &second10c0b
[1]);
3195 buf
[0] = 0x06; buf
[1] = 0x00; buf
[2] = 0x02;
3196 buf
[3] = 0x00; buf
[4] = 0x28; buf
[5] = 0x3c;
3197 usb_microdia_control_write(dev
, 0x1180, buf
, 6);
3199 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00;
3200 buf
[3] = 0xf0; buf
[4] = 0x00;
3201 usb_microdia_control_write(dev
, 0x10fb, buf
, 5); /* URB 70 */
3204 usb_microdia_control_write(dev
, 0x1189, buf
, 1);
3206 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x6a; buf
[3] = 0x50;
3207 usb_microdia_control_write(dev
, 0x11a1, buf
, 4);
3209 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x50; buf
[3] = 0x3c;
3210 usb_microdia_control_write(dev
, 0x11ab, buf
, 4);
3213 usb_microdia_control_write(dev
, 0x1000, buf
, 1);
3216 usb_microdia_control_write(dev
, 0x1002, buf
, 1);
3219 usb_microdia_control_write(dev
, 0x1002, buf
, 1);
3222 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3225 usb_microdia_control_write(dev
, 0x118a, buf
, 1);
3228 usb_microdia_control_write(dev
, 0x0395, buf
, 1);
3231 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 80 */
3232 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3235 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3236 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3239 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3240 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3243 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3244 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3247 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3248 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3251 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 90 */
3253 for (i
= 0; i
< 4; i
++)
3254 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
3255 third10c0
[i
][0], dev
->sensor_flags
, &third10c0
[i
][1]); /* URB 97-106 */
3258 usb_microdia_control_write(dev
, 0x1180, buf
, 1);
3260 for (i
= 0; i
< 3; i
++)
3261 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
3262 fourth10c0a
[i
][0], dev
->sensor_flags
, &fourth10c0a
[i
][1]);
3264 for (i
= 0; i
< 2; i
++)
3265 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
3266 fourth10c0b
[i
][0], dev
->sensor_flags
, &fourth10c0b
[i
][1]);
3268 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0,
3269 0x33, dev
->sensor_flags
, NULL
);
3271 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
3272 first10c0
[0][0], dev
->sensor_flags
, &first10c0
[0][1]);
3275 usb_microdia_control_write(dev
, 0x11ba, buf
, 1);
3278 usb_microdia_control_write(dev
, 0x118b, buf
, 1);
3281 usb_microdia_control_write(dev
, 0x10f7, buf
, 1);
3284 usb_microdia_control_write(dev
, 0x10f8, buf
, 1);
3287 usb_microdia_control_write(dev
, 0x10fa, buf
, 1);
3290 usb_microdia_control_write(dev
, 0x10f9, buf
, 1);
3293 usb_microdia_control_write(dev
, 0x10f9, buf
, 1);
3296 usb_microdia_control_write(dev
, 0x11ba, buf
, 1);
3298 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x00;
3299 usb_microdia_control_write(dev
, 0x11bc, buf
, 4);
3301 /* Set whole array buf to 0x00 */
3302 memset(buf
, 0x00, 48);
3303 usb_microdia_control_write(dev
, 0x11c0, buf
, 48);
3305 buf
[0] = 0x2d; buf
[1] = 0x2d; buf
[2] = 0x3a;
3306 buf
[3] = 0x05; buf
[4] = 0x04; buf
[5] = 0x3f;
3307 usb_microdia_control_write(dev
, 0x11a5, buf
, 6);
3309 buf
[0] = 0x14; buf
[1] = 0xec; buf
[2] = 0x0a; buf
[3] = 0xf6;
3310 usb_microdia_control_write(dev
, 0x11af, buf
, 4);
3312 buf
[0] = 0x32; buf
[1] = 0xdd; buf
[2] = 0x2d; buf
[3] = 0xdd;
3313 usb_microdia_control_write(dev
, 0x11b3, buf
, 4);
3316 usb_microdia_control_write(dev
, 0x10e0, buf
, 1);
3319 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
3322 usb_microdia_control_write(dev
, 0x10e0, buf
, 1);
3324 usb_microdia_control_write(dev
, 0x1100, qtable1
, 64);
3326 usb_microdia_control_write(dev
, 0x1140, qtable2
, 64); /* URB 150 */
3329 usb_microdia_control_write(dev
, 0x10e0, buf
, 1);
3332 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
3335 usb_microdia_control_write(dev
, 0x10e0, buf
, 1);
3338 usb_microdia_control_write(dev
, 0x1189, buf
, 1);
3341 usb_microdia_control_write(dev
, 0x11bc, buf
, 1);
3344 usb_microdia_control_write(dev
, 0x11bd, buf
, 1);
3347 usb_microdia_control_write(dev
, 0x11be, buf
, 1);
3350 usb_microdia_control_write(dev
, 0x11bf, buf
, 1);
3352 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
3353 second10c0a
[0][0], dev
->sensor_flags
, &second10c0a
[0][1]);
3355 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
3356 second10c0a
[1][0], dev
->sensor_flags
, &second10c0a
[1][1]);
3358 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0,
3359 0x09, dev
->sensor_flags
, NULL
);
3361 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
3362 second10c0b
[0], dev
->sensor_flags
, &second10c0b
[1]);
3364 buf
[0] = 0x06; buf
[1] = 0x00; buf
[2] = 0x02;
3365 buf
[3] = 0x00; buf
[4] = 0x28; buf
[5] = 0x3c;
3366 usb_microdia_control_write(dev
, 0x1180, buf
, 6);
3368 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00;
3369 buf
[3] = 0xf0; buf
[4] = 0x00;
3370 usb_microdia_control_write(dev
, 0x10fb, buf
, 5);
3373 usb_microdia_control_write(dev
, 0x1189, buf
, 1);
3375 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x6a; buf
[3] = 0x50;
3376 usb_microdia_control_write(dev
, 0x11a1, buf
, 4); /* URB 170 */
3378 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x50; buf
[3] = 0x3c;
3379 usb_microdia_control_write(dev
, 0x11ab, buf
, 4);
3382 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
3385 usb_microdia_control_write(dev
, 0x11ba, buf
, 1);
3388 usb_microdia_control_write(dev
, 0x11b9, buf
, 1);
3391 usb_microdia_control_write(dev
, 0x11ba, buf
, 1);
3394 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
3397 usb_microdia_control_write(dev
, 0x1000, buf
, 1);
3400 usb_microdia_control_write(dev
, 0x1002, buf
, 1);
3403 usb_microdia_control_write(dev
, 0x1002, buf
, 1);
3406 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 180 */
3409 usb_microdia_control_write(dev
, 0x118a, buf
, 1);
3412 usb_microdia_control_write(dev
, 0x0395, buf
, 1);
3415 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3416 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3419 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3420 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3423 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3424 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3427 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3428 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 190 */
3431 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3432 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3435 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3437 for (i
= 0; i
< 3; i
++)
3438 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
3439 fifth10c0
[i
][0], dev
->sensor_flags
, &fifth10c0
[i
][1]); /* URB 200-205 */
3441 sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 2,
3442 0x00, dev
->sensor_flags
, buf
);
3443 /* __u8 result[2] = {buf[3], buf[4]}; */
3446 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
3453 * @brief From startstream.log
3461 * For SN9C201 with SOI968.
3462 * This is function triggers a working stream of image data and a glowing LED.
3464 int microdia_624e_start_stream(struct usb_microdia
*dev
)
3470 {0x47, 0x18, 0x00, 0x30, 0x00, 0x09, 0x00, 0xed,
3471 0x0f, 0xda, 0x0f, 0x3a, 0x00, 0x3a, 0x00, 0xd0,
3472 0x0f, 0xf7, 0x0f, 0x00, 0x00, 0x00, 0x60, 0x0a};
3475 {0x00, 0x20, 0x20, 0x20, 0x20, 0x00, 0x24, 0x3b,
3476 0x4f, 0x61, 0x71, 0x80, 0x8f, 0x9d, 0xab, 0xb8,
3477 0xc4, 0xd1, 0xdd, 0xe9, 0xf4, 0xff};
3480 {0x0d, 0x08, 0x08, 0x0d, 0x08, 0x08, 0x0d, 0x0d,
3481 0x0d, 0x0d, 0x11, 0x0d, 0x0d, 0x11, 0x15, 0x21,
3482 0x15, 0x15, 0x11, 0x11, 0x15, 0x2a, 0x1d, 0x1d,
3483 0x19, 0x21, 0x32, 0x2a, 0x32, 0x32, 0x2e, 0x2a,
3484 0x2e, 0x2e, 0x36, 0x3a, 0x4b, 0x43, 0x36, 0x3a,
3485 0x47, 0x3a, 0x2e, 0x2e, 0x43, 0x5c, 0x43, 0x47,
3486 0x4f, 0x53, 0x58, 0x58, 0x58, 0x32, 0x3f, 0x60,
3487 0x64, 0x5c, 0x53, 0x64, 0x4b, 0x53, 0x58, 0x53};
3490 {0x0d, 0x11, 0x11, 0x15, 0x11, 0x15, 0x26, 0x15,
3491 0x15, 0x26, 0x53, 0x36, 0x2e, 0x36, 0x53, 0x53,
3492 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53,
3493 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53,
3494 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53,
3495 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53,
3496 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53,
3497 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53};
3499 __u8 first10c0
[20][2] = {
3500 {0x12, 0x80}, {0x12, 0x00}, {0x0c, 0x00}, {0x0f, 0x1f},
3501 {0x11, 0x80}, {0x38, 0x52}, {0x1e, 0x00}, {0x33, 0x08},
3502 {0x35, 0x8c}, {0x36, 0x0c}, {0x37, 0x04}, {0x45, 0x04},
3503 {0x47, 0xff}, {0x3e, 0x00}, {0x3f, 0x00}, {0x3b, 0x20},
3504 {0x3a, 0x96}, {0x3d, 0x0a}, {0x14, 0x4e}, {0x13, 0x88} };
3506 __u8 second10c0a
[2] =
3508 __u8 second10c0b
[5] =
3509 {0x17, 0x13, 0x63, 0x01, 0x79}; /* 4 bytes */
3510 __u8 second10c0c
[2] =
3511 {0x1b, 0x00}; /* 0 bytes */
3512 __u8 second10c0d
[2][2] = {
3516 __u8 third10c0a
[5][2] = {
3522 __u8 third10c0b
[3] =
3523 {0x01, 0x80, 0x80}; /* 2 bytes */
3526 {0x0a, 0x0b, 0x1c, 0x1d}; /* these are four addresses */
3528 /* interrupt down */
3531 usb_microdia_control_write(dev
, 0x1066, buf
, 1);
3533 /* interrupt up and down */
3536 usb_microdia_control_write(dev
, 0x1000, buf
, 1);
3539 usb_microdia_control_write(dev
, 0x1001, buf
, 1);
3542 usb_microdia_control_write(dev
, 0x1002, buf
, 1);
3544 buf
[0] = 0xa0; buf
[1] = 0xa0;
3545 usb_microdia_control_write(dev
, 0x1006, buf
, 2);
3548 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
3551 usb_microdia_control_write(dev
, 0x1020, buf
, 1);
3553 buf
[0] = 0x40; buf
[1] = 0x30; buf
[2] = 0x20;
3554 buf
[3] = 0x10; buf
[4] = 0x08;
3555 usb_microdia_control_write(dev
, 0x1067, buf
, 5);
3557 buf
[0] = 0x92; buf
[1] = dev
->sensor_slave_address
; buf
[2] = 0x00;
3558 buf
[3] = 0x00; buf
[4] = 0x1d; buf
[5] = 0x00;
3559 buf
[6] = 0xa2; buf
[7] = 0x10; buf
[8] = 0x03;
3560 usb_microdia_control_write(dev
, 0x10c0, buf
, 9);
3562 usb_microdia_control_write(dev
, 0x10e0, urb10
, 24);
3564 buf
[0] = 0x00; buf
[1] = 0x00; buf
[3] = 0x00;
3565 usb_microdia_control_write(dev
, 0x10f8, buf
, 3);
3567 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00;
3568 buf
[3] = 0xf0; buf
[4] = 0x00;
3569 usb_microdia_control_write(dev
, 0x10fb, buf
, 5);
3571 buf
[0] = 0x8a; buf
[1] = 0xcc; buf
[2] = 0x08;
3572 usb_microdia_control_write(dev
, 0x1188, buf
, 3);
3574 usb_microdia_control_write(dev
, 0x118b, urb14
, 22);
3576 buf
[0] = 0x00; buf
[1] = 0x00;
3577 usb_microdia_control_write(dev
, 0x11a1, buf
, 2);
3579 buf
[0] = 0x60; buf
[1] = 0x20; buf
[2] = 0x00;
3580 buf
[3] = 0x08; buf
[4] = 0x00; buf
[5] = 0x40;
3581 buf
[6] = 0x01; buf
[7] = 0xf0; buf
[8] = 0x00;
3582 usb_microdia_control_write(dev
, 0x11b7, buf
, 9);
3585 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3588 usb_microdia_control_write(dev
, 0x1000, buf
, 1);
3590 for (i
= 0; i
< 20; i
++)
3591 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
3592 first10c0
[i
][0], dev
->sensor_flags
, &first10c0
[i
][1]);
3595 usb_microdia_control_write(dev
, 0x10e0, buf
, 1);
3598 usb_microdia_control_write(dev
, 0x10e0, buf
, 1);
3601 usb_microdia_control_write(dev
, 0x1001, buf
, 1);
3604 usb_microdia_control_write(dev
, 0x1001, buf
, 1);
3607 usb_microdia_control_write(dev
, 0x1001, buf
, 1);
3610 usb_microdia_control_write(dev
, 0x1189, buf
, 1);
3613 usb_microdia_control_write(dev
, 0x11bc, buf
, 1);
3616 usb_microdia_control_write(dev
, 0x11bd, buf
, 1);
3619 usb_microdia_control_write(dev
, 0x11be, buf
, 1);
3622 usb_microdia_control_write(dev
, 0x11bf, buf
, 1);
3625 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
3626 second10c0a
[0], dev
->sensor_flags
, &second10c0a
[1]);
3628 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
3629 second10c0b
[0], dev
->sensor_flags
, &second10c0b
[1]);
3631 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0,
3632 second10c0c
[0], dev
->sensor_flags
, &second10c0c
[1]);
3634 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
3635 second10c0d
[0][0], dev
->sensor_flags
, &second10c0d
[0][1]);
3637 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
3638 second10c0d
[1][0], dev
->sensor_flags
, &second10c0d
[1][1]);
3640 buf
[0] = 0x3c; buf
[1] = 0x00; buf
[2] = 0x0b;
3641 buf
[3] = 0x00; buf
[4] = 0x28; buf
[5] = 0x3c;
3642 usb_microdia_control_write(dev
, 0x1180, buf
, 6);
3644 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00;
3645 buf
[3] = 0xf0; buf
[4] = 0x00;
3646 usb_microdia_control_write(dev
, 0x10fb, buf
, 5);
3649 usb_microdia_control_write(dev
, 0x1189, buf
, 1);
3651 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x6a; buf
[3] = 0x50;
3652 usb_microdia_control_write(dev
, 0x11a1, buf
, 4);
3654 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x50; buf
[3] = 0x3c;
3655 usb_microdia_control_write(dev
, 0x11ab, buf
, 4);
3658 usb_microdia_control_write(dev
, 0x1000, buf
, 1);
3661 usb_microdia_control_write(dev
, 0x1002, buf
, 1);
3664 usb_microdia_control_write(dev
, 0x1002, buf
, 1);
3667 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3670 usb_microdia_control_write(dev
, 0x118a, buf
, 1);
3673 usb_microdia_control_write(dev
, 0x0395, buf
, 1);
3676 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3677 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3680 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3681 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3684 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3685 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3688 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3689 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3692 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3693 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3696 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3697 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3700 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3701 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3704 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3705 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3708 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3710 for (i
= 0; i
< 5; i
++)
3711 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
3712 third10c0a
[i
][0], dev
->sensor_flags
, &third10c0a
[i
][1]);
3714 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
3715 third10c0b
[0], dev
->sensor_flags
, &third10c0b
[1]);
3718 usb_microdia_control_write(dev
, 0x11ba, buf
, 1);
3721 usb_microdia_control_write(dev
, 0x118b, buf
, 1);
3724 usb_microdia_control_write(dev
, 0x10f7, buf
, 1);
3727 usb_microdia_control_write(dev
, 0x10f8, buf
, 1);
3730 usb_microdia_control_write(dev
, 0x10fa, buf
, 1);
3733 usb_microdia_control_write(dev
, 0x10f9, buf
, 1);
3736 usb_microdia_control_write(dev
, 0x10f9, buf
, 1);
3739 usb_microdia_control_write(dev
, 0x11ba, buf
, 1);
3741 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x00;
3742 usb_microdia_control_write(dev
, 0x11bc, buf
, 4);
3744 /* Set whole buf to 0x00 */
3746 usb_microdia_control_write(dev
, 0x11c0, buf
, 48);
3747 buf
[0] = 0x2d; buf
[1] = 0x2d; buf
[2] = 0x3a;
3748 buf
[3] = 0x05; buf
[4] = 0x04; buf
[5] = 0x3f;
3749 usb_microdia_control_write(dev
, 0x11a5, buf
, 6);
3751 buf
[0] = 0x28; buf
[1] = 0xd8; buf
[2] = 0x14; buf
[3] = 0xec;
3752 usb_microdia_control_write(dev
, 0x11af, buf
, 4);
3754 buf
[0] = 0x32; buf
[1] = 0xdd; buf
[2] = 0x2d; buf
[3] = 0xdd;
3755 usb_microdia_control_write(dev
, 0x11b3, buf
, 4);
3758 usb_microdia_control_write(dev
, 0x10e0, buf
, 1);
3761 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
3764 usb_microdia_control_write(dev
, 0x10e0, buf
, 1);
3766 usb_microdia_control_write(dev
, 0x1100, qtable1
, 64);
3768 usb_microdia_control_write(dev
, 0x1140, qtable2
, 64);
3771 usb_microdia_control_write(dev
, 0x10e0, buf
, 1);
3774 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
3777 usb_microdia_control_write(dev
, 0x10e0, buf
, 1);
3780 usb_microdia_control_write(dev
, 0x1189, buf
, 1);
3783 usb_microdia_control_write(dev
, 0x11bc, buf
, 1);
3786 usb_microdia_control_write(dev
, 0x11bd, buf
, 1);
3789 usb_microdia_control_write(dev
, 0x11be, buf
, 1);
3792 usb_microdia_control_write(dev
, 0x11bf, buf
, 1);
3794 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
3795 second10c0b
[0], dev
->sensor_flags
, &second10c0b
[1]);
3797 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0,
3798 second10c0c
[0], dev
->sensor_flags
, &second10c0c
[1]);
3800 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
3801 second10c0d
[0][0], dev
->sensor_flags
, &second10c0d
[0][1]);
3803 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
3804 second10c0d
[1][0], dev
->sensor_flags
, &second10c0d
[1][1]);
3806 buf
[0] = 0x3c; buf
[1] = 0x00; buf
[2] = 0x0b;
3807 buf
[3] = 0x00; buf
[4] = 0x28; buf
[5] = 0x3c;
3808 usb_microdia_control_write(dev
, 0x1180, buf
, 6);
3810 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00;
3811 buf
[3] = 0xf0; buf
[4] = 0x00;
3812 usb_microdia_control_write(dev
, 0x10fb, buf
, 5);
3815 usb_microdia_control_write(dev
, 0x1189, buf
, 1);
3817 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x6a; buf
[3] = 0x50;
3818 usb_microdia_control_write(dev
, 0x11a1, buf
, 4);
3820 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x50; buf
[3] = 0x3c;
3821 usb_microdia_control_write(dev
, 0x11ab, buf
, 4);
3824 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
3827 usb_microdia_control_write(dev
, 0x11ba, buf
, 1);
3830 usb_microdia_control_write(dev
, 0x11b9, buf
, 1);
3833 usb_microdia_control_write(dev
, 0x11ba, buf
, 1);
3836 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
3839 usb_microdia_control_write(dev
, 0x1000, buf
, 1);
3842 usb_microdia_control_write(dev
, 0x1002, buf
, 1);
3845 usb_microdia_control_write(dev
, 0x1002, buf
, 1);
3848 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3851 usb_microdia_control_write(dev
, 0x118a, buf
, 1);
3854 usb_microdia_control_write(dev
, 0x0395, buf
, 1);
3857 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3858 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3861 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3862 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3865 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3866 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3869 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3870 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3873 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3874 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3877 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3878 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3881 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3882 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3885 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3886 usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
3889 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
3891 for (i
= 0; i
< 3; i
++)
3892 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
3893 third10c0a
[i
][0], dev
->sensor_flags
, &third10c0a
[i
][1]);
3895 for (i
= 0; i
< 4; i
++)
3896 sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
,
3897 1, read10c0
[i
], dev
->sensor_flags
, buf
);
3900 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
3903 usb_microdia_control_write(dev
, 0x1007, buf
, 1);
3906 usb_microdia_control_write(dev
, 0x1006, buf
, 1);
3912 int microdia_624f_start_stream(struct usb_microdia
*dev
)
3915 __u8 unknown1
[9] = { dev
->sensor_flags
, dev
->sensor_slave_address
,
3916 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03 };
3980 __u8 reg_11c0
[48] = {
3981 0x10, 0x21, 0x34, 0x40, 0x47, 0x4f, 0x57, 0x5f,
3982 0x64, 0x68, 0x6d, 0x73, 0x79, 0x80, 0x89, 0x97,
3983 0x0d, 0x1c, 0x2a, 0x33, 0x38, 0x3d, 0x44, 0x4a,
3984 0x4e, 0x52, 0x56, 0x5b, 0x61, 0x68, 0x6f, 0x7a,
3985 0x0d, 0x1a, 0x2a, 0x31, 0x36, 0x3b, 0x41, 0x47,
3986 0x4a, 0x4e, 0x53, 0x58, 0x5d, 0x64, 0x6b, 0x76
3989 __u8 qtable1
[64] = {
3990 0x0d, 0x08, 0x08, 0x0d, 0x08, 0x08, 0x0d, 0x0d,
3991 0x0d, 0x0d, 0x11, 0x0d, 0x0d, 0x11, 0x15, 0x21,
3992 0x15, 0x15, 0x11, 0x11, 0x15, 0x2a, 0x1d, 0x1d,
3993 0x19, 0x21, 0x32, 0x2a, 0x32, 0x32, 0x2e, 0x2a,
3994 0x2e, 0x2e, 0x36, 0x3a, 0x4b, 0x43, 0x36, 0x3a,
3995 0x47, 0x3a, 0x2e, 0x2e, 0x43, 0x5c, 0x43, 0x47,
3996 0x4f, 0x54, 0x58, 0x58, 0x58, 0x32, 0x3f, 0x60,
3997 0x64, 0x5c, 0x54, 0x64, 0x4b, 0x54, 0x58, 0x54
4000 __u8 qtable2
[64] = {
4001 0x0d, 0x11, 0x11, 0x15, 0x11, 0x15, 0x26, 0x15,
4002 0x15, 0x26, 0x54, 0x36, 0x2e, 0x36, 0x54, 0x54,
4003 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
4004 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
4005 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
4006 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
4007 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
4008 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54
4011 for (i
= 0; i
< ARRAY_SIZE(regs
); i
++) {
4014 ret
= usb_microdia_control_write(dev
, reg
, &value
, 1);
4016 UDIA_INFO("Bridge Init Error (%d). line %d", ret
, i
);
4021 ret
= usb_microdia_control_write(dev
, 0x11c0, reg_11c0
, 48);
4025 ret
= usb_microdia_control_write(dev
, 0x1100, qtable1
, 64);
4029 ret
= usb_microdia_control_write(dev
, 0x1140, qtable2
, 64);
4033 /* this is the same register as the I2C write, not sure why
4034 * we're writing 9 bytes -- the SN9C102 docs say all writes
4035 * must be 8 bytes, but we don't have docs for SN9C20x */
4036 ret
= usb_microdia_control_write(dev
, 0x10c0, unknown1
, 9);
4040 if (dev
->sensor_init
)
4041 dev
->sensor_init(dev
);
4046 UDIA_ERROR("start stream: failed (%d)!\n", ret
);
4050 int microdia_6260_start_stream(struct usb_microdia
*dev
)
4055 ret
= usb_microdia_control_read(dev
, 0x1045, buf
, 1);
4057 ret
= usb_microdia_control_write(dev
, 0x1045, buf
, 1);
4059 ret
= usb_microdia_control_write(dev
, 0x1066, buf
, 1);
4061 ret
= usb_microdia_control_write(dev
, 0x1007, buf
, 1);
4063 ret
= usb_microdia_control_write(dev
, 0x1006, buf
, 1);
4065 ret
= usb_microdia_control_write(dev
, 0x1000, buf
, 1);
4067 ret
= usb_microdia_control_write(dev
, 0x1001, buf
, 1);
4069 ret
= usb_microdia_control_write(dev
, 0x1002, buf
, 1);
4071 ret
= usb_microdia_control_write(dev
, 0x1061, buf
, 1);
4073 ret
= usb_microdia_control_write(dev
, 0x1020, buf
, 1);
4075 buf
[0] = 0x40; buf
[1] = 0x30; buf
[2] = 0x20; buf
[3] = 0x10;
4077 ret
= usb_microdia_control_write(dev
, 0x1067, buf
, 5);
4079 buf
[0] = 0x80; buf
[1] = 0x21; buf
[2] = 0x00; buf
[3] = 0x00;
4080 buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x00;
4082 ret
= usb_microdia_control_write(dev
, 0x10c0, buf
, 9);
4084 buf
[0] = 0x45; buf
[1] = 0x18; buf
[2] = 0x00; buf
[3] = 0x30;
4085 buf
[4] = 0x00; buf
[5] = 0x09; buf
[6] = 0x00; buf
[7] = 0xed;
4086 buf
[8] = 0x0f; buf
[9] = 0xda; buf
[10] = 0x0f; buf
[11] = 0x3a;
4087 buf
[12] = 0x00; buf
[13] = 0x3a; buf
[14] = 0x00; buf
[15] = 0xd0;
4088 buf
[16] = 0x0f; buf
[17] = 0xf7; buf
[18] = 0x0f; buf
[19] = 0x00;
4089 buf
[20] = 0x00; buf
[21] = 0x00; buf
[22] = 0x60; buf
[23] = 0x0a;
4090 ret
= usb_microdia_control_write(dev
, 0x10e0, buf
, 24);
4092 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00;
4093 ret
= usb_microdia_control_write(dev
, 0x10f8, buf
, 3);
4095 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0;
4097 ret
= usb_microdia_control_write(dev
, 0x10fb, buf
, 5);
4099 buf
[0] = 0x8a; buf
[1] = 0x8c; buf
[2] = 0x08;
4100 ret
= usb_microdia_control_write(dev
, 0x1188, buf
, 3);
4102 buf
[0] = 0x00; buf
[1] = 0x20; buf
[2] = 0x20; buf
[3] = 0x20;
4103 buf
[4] = 0x20; buf
[5] = 0x00; buf
[6] = 0x24; buf
[7] = 0x3b;
4104 buf
[8] = 0x4f; buf
[9] = 0x61; buf
[10] = 0x71; buf
[11] = 0x80;
4105 buf
[12] = 0x8f; buf
[13] = 0x9d; buf
[14] = 0xab; buf
[15] = 0xb8;
4106 buf
[16] = 0xc4; buf
[17] = 0xd1; buf
[18] = 0xdd; buf
[19] = 0xe9;
4107 buf
[20] = 0xf4; buf
[21] = 0xff;
4108 ret
= usb_microdia_control_write(dev
, 0x118b, buf
, 22);
4110 buf
[0] = 0x00; buf
[1] = 0x00;
4111 ret
= usb_microdia_control_write(dev
, 0x11a1, buf
, 2);
4113 buf
[0] = 0x60; buf
[1] = 0x28; buf
[2] = 0x00; buf
[3] = 0x00;
4114 buf
[4] = 0x00; buf
[5] = 0x40; buf
[6] = 0x01; buf
[7] = 0xf0;
4116 ret
= usb_microdia_control_write(dev
, 0x11b7, buf
, 9);
4119 ret
= usb_microdia_control_write(dev
, 0x1000, buf
, 1);
4122 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4124 ret
= ov7670_initialise(dev
);
4128 ret
= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 1, 0x3b, dev
->sensor_flags
, buf
);
4129 ret
= usb_microdia_control_read(dev
, 0x10c1, buf
, 1);
4131 ret
= usb_microdia_control_write(dev
, 0x10c1, buf
, 1);
4133 /* TRY TO READ FROM EEPROM: */
4134 ret
= sn9c20x_read_i2c_data(dev
, 0x50, 1, 0x00, dev
->sensor_flags
, buf
);
4136 UDIA_INFO("No EEPROM found\n");
4138 UDIA_INFO("Read from EEPROM successful\n");
4141 ret
= usb_microdia_control_write(dev
, 0x10c1, buf
, 1);
4143 ret
= usb_microdia_control_write(dev
, 0x10e0, buf
, 1);
4145 ret
= usb_microdia_control_write(dev
, 0x1001, buf
, 1);
4147 ret
= usb_microdia_control_write(dev
, 0x1001, buf
, 1);
4149 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x01; buf
[3] = 0x00;
4150 buf
[4] = 0x50; buf
[5] = 0x3c;
4151 ret
= usb_microdia_control_write(dev
, 0x1180, buf
, 6);
4153 buf
[0] = 0x00; buf
[1] = 0x40; buf
[2] = 0x00; buf
[3] = 0xf0;
4155 ret
= usb_microdia_control_write(dev
, 0x10fb, buf
, 5);
4158 ret
= usb_microdia_control_write(dev
, 0x1189, buf
, 1);
4160 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xd5; buf
[3] = 0x50;
4161 ret
= usb_microdia_control_write(dev
, 0x11a1, buf
, 4);
4163 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xa0; buf
[3] = 0x3c;
4164 ret
= usb_microdia_control_write(dev
, 0x11ab, buf
, 4);
4166 ret
= usb_microdia_control_write(dev
, 0x1000, buf
, 1);
4168 ret
= usb_microdia_control_write(dev
, 0x1002, buf
, 1);
4170 ret
= usb_microdia_control_write(dev
, 0x1002, buf
, 1);
4172 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4174 ret
= usb_microdia_control_write(dev
, 0x118a, buf
, 1);
4176 ret
= usb_microdia_control_write(dev
, 0x0395, buf
, 1);
4178 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4179 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4181 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4182 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4184 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4185 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4187 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4188 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4190 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4191 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4193 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4194 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4196 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4198 /* OV7670 Intialise Part 2 */
4199 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x01; buf
[3] = 0x00;
4200 buf
[4] = 0x50; buf
[5] = 0x3c;
4201 ret
= usb_microdia_control_write(dev
, 0x1180, buf
, 6);
4203 buf
[0] = 0x00; buf
[1] = 0x40; buf
[2] = 0x00; buf
[3] = 0xf0;
4205 ret
= usb_microdia_control_write(dev
, 0x10fb, buf
, 5);
4208 ret
= usb_microdia_control_write(dev
, 0x1189, buf
, 1);
4210 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xd5; buf
[3] = 0x50;
4211 ret
= usb_microdia_control_write(dev
, 0x11a1, buf
, 4);
4213 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xa0; buf
[3] = 0x3c;
4214 ret
= usb_microdia_control_write(dev
, 0x11ab, buf
, 4);
4217 ret
= usb_microdia_control_write(dev
, 0x1061, buf
, 1);
4219 ret
= usb_microdia_control_write(dev
, 0x1061, buf
, 1);
4221 ret
= usb_microdia_control_write(dev
, 0x1000, buf
, 1);
4223 ret
= usb_microdia_control_write(dev
, 0x1002, buf
, 1);
4225 ret
= usb_microdia_control_write(dev
, 0x1002, buf
, 1);
4227 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4229 ret
= usb_microdia_control_write(dev
, 0x118a, buf
, 1);
4231 ret
= usb_microdia_control_write(dev
, 0x0395, buf
, 1);
4233 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4234 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4236 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4237 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4239 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4240 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4242 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4243 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4245 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4246 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4248 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4249 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4251 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4253 /* OV7670 Initialisation Part 3 Goes Here */
4255 ret
= usb_microdia_control_write(dev
, 0x1061, buf
, 1);
4261 * @brief From 7 start-stop-logs (made by Alex Carlos, Boris Borisov, bohzan and Comer352l)
4265 * @returns 0 (ok) or -1 (error)
4269 * Windows driver versions: 5.7.23.000
4270 * Windows versions: 2000 and XP
4271 * USB-Logger: SniffUSB 1.8 and 2.0, USBTrace 2.0, SnoopyPro
4272 * All logs were made using AMCAP with 640x480, RGB24
4274 int microdia_6270_start_stream(struct usb_microdia
*dev
)
4281 /* Check if sensor slave address is valid: */
4282 if ((dev
->sensor_slave_address
!= MT9V111_I2C_SLAVE_ADDRESS
) && (dev
->sensor_slave_address
!= MT9V011_I2C_SLAVE_ADDRESS
)) {
4283 UDIA_INFO("microdia_6270_start_stream(): Invalid sensor slave address !\n");
4287 /* <= INTERRUPT COMING BACK (URB 1953) */
4288 /* SWITCH TO ALTERNATE SETTINGS 8 (URB 1954) // NOT IN ALEX'S LOG */
4289 /* => INTERRUPT GOING DOWN (URB 1955) */
4292 usb_microdia_control_write(dev
, 0x1066, buf
, 1); /* URB 1956 */
4294 /* <= INTERRUPT COMING BACK (URB 1955) */
4295 /* => INTERRUPT GOING DOWN (URB 1957) */
4298 usb_microdia_control_write(dev
, 0x1000, buf
, 1); /* URB 1958 */
4300 usb_microdia_control_write(dev
, 0x1001, buf
, 1); /* URB 1959 */
4302 usb_microdia_control_write(dev
, 0x1002, buf
, 1); /* URB 1960 */
4304 usb_microdia_control_write(dev
, 0x1061, buf
, 1); /* URB 1961 */
4306 usb_microdia_control_write(dev
, 0x1020, buf
, 1); /* URB 1962 */
4307 buf
[0] = 0x40; buf
[1] = 0x30; buf
[2] = 0x20; buf
[3] = 0x10; buf
[4] = 0x08;
4308 usb_microdia_control_write(dev
, 0x1067, buf
, 5); /* URB 1963 */
4310 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4311 /* STRANGE I2C MESSAGE: */
4313 /* - byte 8 = 0x00 at first start + first cycle */
4314 /* - procedure not complete: no wait/check for ack/error, no readout of 0x10c2 */
4315 /* - dummy writes at first cycle and read at second cycle, but there are many I2C messages in the meantime, so this should not work */
4317 /* AT FIRST START + FIRST CYCLE: */
4318 buf
[0] = 0x80; buf
[1] = dev
->sensor_slave_address
; buf
[2] = 0x00; buf
[3] = 0x00;
4319 buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x00; buf
[8] = 0x03;
4320 /* AT ALL FURTHER STARTS + FIRST CYCLE: */
4321 /* MT9V111: I2C MESSAGE => IFP Register 0x33: Auto exposure */
4322 /* buf[0] = 0x90; buf[1] = dev->sensor_slave_address; buf[2] = 0x33; buf[3] = 0x00; */
4323 /* buf[4] = 0x00; buf[5] = 0x00; buf[6] = 0x00; buf[7] = 0x10; buf[8] = 0x03; */
4324 /* MT9V011: ????????????????????????? */
4325 /* buf[0] = 0x90; buf[1] = dev->sensor_slave_address; buf[2] = 0x07; buf[3] = 0x00; */
4326 /* buf[4] = 0x00; buf[5] = 0x00; buf[6] = 0x00; buf[7] = 0x10; buf[8] = 0x03; */
4327 /* ALWAYS AT 2nd AND FURTHER CYCLES: */
4329 /* buf[0] = 0xa2; buf[1] = 0x5c; buf[2] = 0x00; buf[3] = 0x36; */
4330 /* buf[4] = 0x00; buf[5] = 0x82; buf[6] = 0x3a; buf[7] = 0x10; buf[8] = 0x03; */
4331 /* => buf[3] to buf[6] simply contain bytes read with URB 2215 */
4333 /* buf[0] = 0xb0; buf[1] = 0x5d; buf[2] = 0x07; buf[3] = 0x00; */
4334 /* buf[4] = 0x00; buf[5] = 0x00; buf[6] = 0x00; buf[7] = 0x10; buf[8] = 0x03; */
4335 usb_microdia_control_write(dev
, 0x10c0, buf
, 9); /* URB 1964 */
4336 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4338 buf
[0] = 0x45; buf
[1] = 0x18; buf
[2] = 0x00; buf
[3] = 0x30;
4339 buf
[4] = 0x00; buf
[5] = 0x09; buf
[6] = 0x00; buf
[7] = 0xed;
4340 buf
[8] = 0x0f; buf
[9] = 0xda; buf
[10] = 0x0f; buf
[11] = 0x3a;
4341 buf
[12] = 0x00; buf
[13] = 0x3a; buf
[14] = 0x00; buf
[15] = 0xd0;
4342 buf
[16] = 0x0f; buf
[17] = 0xf7; buf
[18] = 0x0f; buf
[19] = 0x00;
4343 buf
[20] = 0x00; buf
[21] = 0x00; buf
[22] = 0x60; buf
[23] = 0x0a;
4344 usb_microdia_control_write(dev
, 0x10e0, buf
, 24); /* URB 1965 */
4345 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00;
4346 usb_microdia_control_write(dev
, 0x10f8, buf
, 3); /* URB 1966 */
4347 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
4348 usb_microdia_control_write(dev
, 0x10fb, buf
, 5); /* URB 1967 */
4349 buf
[0] = 0x06; buf
[1] = 0x0c; buf
[2] = 0x08;
4350 usb_microdia_control_write(dev
, 0x1188, buf
, 3); /* URB 1968 */
4351 buf
[0] = 0x00; buf
[1] = 0x20; buf
[2] = 0x20; buf
[3] = 0x20;
4352 buf
[4] = 0x20; buf
[5] = 0x00; buf
[6] = 0x24; buf
[7] = 0x3b;
4353 buf
[8] = 0x4f; buf
[9] = 0x61; buf
[10] = 0x71; buf
[11] = 0x80;
4354 buf
[12] = 0x8f; buf
[13] = 0x9d; buf
[14] = 0xab; buf
[15] = 0xb8;
4355 buf
[16] = 0xc4; buf
[17] = 0xd1; buf
[18] = 0xdd; buf
[19] = 0xe9;
4356 buf
[20] = 0xf4; buf
[21] = 0xff;
4357 usb_microdia_control_write(dev
, 0x118b, buf
, 22); /* URB 1969 */
4358 buf
[0] = 0x00; buf
[1] = 0x00;
4359 usb_microdia_control_write(dev
, 0x11a1, buf
, 2); /* URB 1970 */
4360 buf
[0] = 0x60; buf
[1] = 0x28; buf
[2] = 0x00; buf
[3] = 0x08;
4361 buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x00;
4363 usb_microdia_control_write(dev
, 0x11b7, buf
, 9); /* URB 1971 */
4365 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 1972 */
4367 usb_microdia_control_write(dev
, 0x1000, buf
, 1); /* URB 1973 */
4369 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4372 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4373 /* Write to IFP register 0x0d: Color Correction Register 8 */
4374 buf
[0] = 0x00; buf
[1] = 0x01;
4375 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0d, dev
->sensor_flags
, buf
); /* URBs 1974-1976 */
4376 /* Write to IFP register 0x0d: Color Correction Register 8 */
4377 buf
[0] = 0x00; buf
[1] = 0x00; /* ??? */
4378 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0d, dev
->sensor_flags
, buf
); /* URBs 1977-1979 */
4379 /* Writes to IFP registers 0x01: Register Address Space Selection */
4380 /* 0x02: Color Correction Register 1 */
4381 buf
[0] = 0x00; buf
[1] = 0x01; /* select IFP address space */
4382 buf
[2] = 0x00; buf
[3] = 0x16; /* ??? // AT FIRST START + FIRST CYCLE: 0x00 0x00 */
4383 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x01, dev
->sensor_flags
, buf
); /* URBs 1980-1982 */
4384 /* Writes to IFP registers 0x03: Color Correction Register 3 */
4385 /* 0x04: Color Correction Register 4 */
4386 buf
[0] = 0x01; buf
[1] = 0xe1; /* ??? // AT FIRST START + FIRST CYCLE: 0x00 0x00 */
4387 buf
[2] = 0x02; buf
[3] = 0x81; /* ??? // AT FIRST START + FIRST CYCLE: 0x00 0x00 */
4388 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x03, dev
->sensor_flags
, buf
); /* URBs 1983-1985 */
4389 /* Writes to IFP registers 0x05: Aperture Correction (Sharpening) */
4390 /* 0x06: Operating Mode Control */
4391 buf
[0] = 0x00; buf
[1] = 0x04; /* 100% sharpening, no automatic sharpness reduction at low light // AT FIRST START + FIRST CYCLE: 0x00 0x00: no sharpening */
4392 buf
[2] = 0x00; buf
[3] = 0x00; /* stop AWB at the current values, no on-the-fly defect correction, no auto exposure, + RESREVED option */
4393 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x05, dev
->sensor_flags
, buf
); /* URBs 1986-1988 */
4394 /* Writes to IFP registers 0x07: Image Flow Processor Soft Reset */
4395 /* 0x08: Output Format Control */
4396 buf
[0] = 0x30; buf
[1] = 0x02; /* reset // AT FIRST START + FIRST CYCLE: 0x00 0x00 */
4397 buf
[2] = 0x04; buf
[3] = 0x80; /* bypass entire image processing, raw 8+2 Bayer data output directly */
4398 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x07, dev
->sensor_flags
, buf
); /* URBs 1989-1991 */
4399 /* "Dummy" write to IFP Register 0x11: Color Correction Register 12 */
4400 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x11, dev
->sensor_flags
, NULL
); /* URBs 1992-1993 */
4401 /* Write to register 0x01: Register address space selection */
4402 /* Write to sensor register 0x02: Column Start */
4403 buf
[0] = 0x00; buf
[1] = 0x04; /* select sensor address space */
4404 buf
[2] = 0x00; buf
[3] = 0x16; /* start with column 22 */
4405 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x01, dev
->sensor_flags
, buf
); /* URBs 1994-1996 */
4406 /* Writes to sensor registers 0x03: Window Height */
4407 /* 0x04: Window Width */
4408 buf
[0] = 0x01; buf
[1] = 0xe6; /* 486 */
4409 buf
[2] = 0x02; buf
[3] = 0x86; /* 646 */
4410 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x03, dev
->sensor_flags
, buf
); /* URBs 1997-1999 */
4411 /* Writes to sensor registers 0x05: Horizontal Blanking */
4412 /* 0x06: Vertical Blanking */
4413 buf
[0] = 0x00; buf
[1] = 0x04; /* 4 columns (pixel clocks) // AT FIRST START + FIRST CYCLE: 0x00 0x00 */
4414 buf
[2] = 0x00; buf
[3] = 0x00; /* 0 rows */
4415 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x05, dev
->sensor_flags
, buf
); /* URBs 2000-2002 */
4416 /* Writes to sensor registers 0x07: Output Control */
4417 /* 0x08: Row Start */
4418 buf
[0] = 0x30; buf
[1] = 0x02; /* normal operation + chip enable + RESERVED options */
4419 buf
[2] = 0x00; buf
[3] = 0x08; /* row 8 */
4420 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x07, dev
->sensor_flags
, buf
); /* URBs 2003-2005 */
4421 /* "Dummy" write to sensor Register 0x11: UNDOCUMENTED */
4422 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x11, dev
->sensor_flags
, NULL
); /* URBs 2006-2007 */
4423 /* Writes to sensor registers 0x0c: Shutter Delay */
4424 /* 0x0d: Reset (Soft) (from MT9V011 datasheet) */
4425 buf
[0] = 0x00; buf
[1] = 0x00; /* 0 master clocks */
4426 buf
[2] = 0x00; buf
[3] = 0x00; /* return to normal operation */
4427 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x0c, dev
->sensor_flags
, buf
); /* URBs 2008-2010 */
4428 /* Writes to sensor registers 0x0e: UNDOCUMENTED */
4429 /* 0x0f: UNDOCUMENTED */
4430 buf
[0] = 0x00; buf
[1] = 0x00;
4431 buf
[2] = 0x00; buf
[3] = 0x00;
4432 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x0e, dev
->sensor_flags
, buf
); /* URBs 2011-2013 */
4433 /* Writes to sensor registers 0x10: UNDOCUMENTED */
4434 /* 0x11: UNDOCUMENTED */
4435 buf
[0] = 0x00; buf
[1] = 0x00;
4436 buf
[2] = 0x00; buf
[3] = 0x00;
4437 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x10, dev
->sensor_flags
, buf
); /* URBs 2014-2016 */
4438 /* Writes to sensor registers 0x12: 2X Zoom Col Start => 0x1e bit 0 must be set to activate zoom */
4439 /* 0x13: 2X Zoom Row Start => 0x1e bit 0 must be set to activate zoom */
4440 buf
[0] = 0x00; buf
[1] = 0xb0; /* column 176 */
4441 buf
[2] = 0x00; buf
[3] = 0x7c; /* row 124 */
4442 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x12, dev
->sensor_flags
, buf
); /* URBs 2017-2018 */
4443 /* Writes to sensor registers 0x14: UNDOCUMENTED */
4444 /* 0x15: UNDOCUMENTED */
4445 buf
[0] = 0x00; buf
[1] = 0x00;
4446 buf
[2] = 0x00; buf
[3] = 0x00;
4447 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x14, dev
->sensor_flags
, buf
); /* URBs 2019-2021 */
4448 /* Writes to sensor registers 0x16: UNDOCUMENTED */
4449 /* 0x17: UNDOCUMENTED */
4450 buf
[0] = 0x00; buf
[1] = 0x00;
4451 buf
[2] = 0x00; buf
[3] = 0x00;
4452 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x16, dev
->sensor_flags
, buf
); /* URBs 2022-2024 */
4453 /* Writes to sensor registers 0x18: UNDOCUMENTED */
4454 /* 0x19: UNDOCUMENTED */
4455 buf
[0] = 0x00; buf
[1] = 0x00;
4456 buf
[2] = 0x00; buf
[3] = 0x00;
4457 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x18, dev
->sensor_flags
, buf
); /* URBs 2025-2027 */
4458 /* Writes to sensor registers 0x1a: UNDOCUMENTED */
4459 /* 0x1b: UNDOCUMENTED */
4460 buf
[0] = 0x00; buf
[1] = 0x00;
4461 buf
[2] = 0x00; buf
[3] = 0x00;
4462 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x1a, dev
->sensor_flags
, buf
); /* URBs 2028-2030 */
4463 /* Writes to sensor registers 0x1c: UNDOCUMENTED */
4464 /* 0x1d: UNDOCUMENTED */
4465 buf
[0] = 0x00; buf
[1] = 0x00;
4466 buf
[2] = 0x00; buf
[3] = 0x00;
4467 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x1c, dev
->sensor_flags
, buf
); /* URBs 2031-2033 */
4468 /* Write to sensor register 0x30: RESERVED */
4469 buf
[0] = 0x00; buf
[1] = 0x00;
4470 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x30, dev
->sensor_flags
, buf
); /* URBs 2034-2036 */
4471 /* Write to sensor register 0x20: Read Mode */
4472 buf
[0] = 0x00; buf
[1] = 0x00; /* normal readout */
4473 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x20, dev
->sensor_flags
, buf
); /* URBs 2037-2039 */
4474 /* Writes to sensor registers 0x30: RESERVED */
4475 /* 0x31: RESERVED */
4476 buf
[0] = 0x00; buf
[1] = 0x05;
4477 buf
[2] = 0x00; buf
[3] = 0x00;
4478 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x30, dev
->sensor_flags
, buf
); /* URBs 2040-2042 */
4479 /* "Dummy" write to sensor Register 0x34: RESERVED */
4480 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x34, dev
->sensor_flags
, NULL
); /* URBs 2043-2044 */
4481 } else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
4482 /* Write to sensor register 0x07: Output Control */
4483 buf
[0] = 0x00; buf
[1] = 0x02; /* chip enable, normal operation */
4484 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x07, dev
->sensor_flags
, buf
);
4485 /* Write to sensor register 0x0d: Soft Reset */
4486 buf
[0] = 0x00; buf
[1] = 0x01; /* reset */
4487 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0d, dev
->sensor_flags
, buf
);
4488 /* Write to sensor register 0x0d: Soft Reset */
4489 buf
[0] = 0x00; buf
[1] = 0x00; /* resume operation */
4490 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0d, dev
->sensor_flags
, buf
);
4491 /* Writes to sensor registers 0x01: Row start */
4492 /* 0x02: Column Start */
4493 buf
[0] = 0x00; buf
[1] = 0x08; /* start with row 8 */
4494 buf
[2] = 0x00; buf
[3] = 0x16; /* start with column 22 */
4495 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x01, dev
->sensor_flags
, buf
);
4496 /* Writes to sensor registers 0x03: Window Height */
4497 /* 0x04: Window Width */
4498 buf
[0] = 0x01; buf
[1] = 0xe1; /* 481 */
4499 buf
[2] = 0x02; buf
[3] = 0x81; /* 641 */
4500 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x03, dev
->sensor_flags
, buf
);
4501 /* Writes to sensor registers 0x05: Horizontal Blanking */
4502 /* 0x06: Vertical Blanking */
4503 buf
[0] = 0x00; buf
[1] = 0x83; /* 131 columns (pixel clocks) */
4504 buf
[2] = 0x00; buf
[3] = 0x06; /* 6 rows */
4505 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x05, dev
->sensor_flags
, buf
);
4506 /* Write to sensor register 0x0d: Soft Reset */
4507 buf
[0] = 0x00; buf
[1] = 0x02; /* UNKNOWN */
4508 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0d, dev
->sensor_flags
, buf
);
4509 /* Writes to sensor registers 0x0a: Pixel Clock Speed */
4510 /* 0x0b: Frame Restart */
4511 buf
[0] = 0x00; buf
[1] = 0x00; /* default */
4512 buf
[2] = 0x00; buf
[3] = 0x00; /* (has no effect/no restart) */
4513 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x0a, dev
->sensor_flags
, buf
);
4514 /* Writes to sensor registers 0x0c: Shutter Delay */
4515 /* 0x0d: Soft Reset */
4516 buf
[0] = 0x00; buf
[1] = 0x00; /* 0 master clocks */
4517 buf
[2] = 0x00; buf
[3] = 0x00; /* resume operation */
4518 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x0c, dev
->sensor_flags
, buf
);
4519 /* Writes to sensor registers 0x0e: UNDOCUMENTED */
4520 /* 0x0f: UNDOCUMENTED */
4521 buf
[0] = 0x00; buf
[1] = 0x00;
4522 buf
[2] = 0x00; buf
[3] = 0x00;
4523 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x0e, dev
->sensor_flags
, buf
);
4524 /* Writes to sensor registers 0x10: UNDOCUMENTED */
4525 /* 0x11: UNDOCUMENTED */
4526 buf
[0] = 0x00; buf
[1] = 0x00;
4527 buf
[2] = 0x00; buf
[3] = 0x00;
4528 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x10, dev
->sensor_flags
, buf
);
4529 /* Writes to sensor registers 0x12: 2X Zoom Column Start (from MT9V111 datasheet) */
4530 /* 0x13: 2X Zoom Row Start (from MT9V111 datasheet) */
4531 buf
[0] = 0x00; buf
[1] = 0x00; /* column 0 => bit0 of reg 0x1e must be set to activate zoom */
4532 buf
[2] = 0x00; buf
[3] = 0x00; /* row 0 => bit0 of reg 0x1e must be set to activate zoom */
4533 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x12, dev
->sensor_flags
, buf
);
4534 /* Writes to sensor registers 0x14: UNDOCUMENTED */
4535 /* 0x15: UNDOCUMENTED */
4536 buf
[0] = 0x00; buf
[1] = 0x00;
4537 buf
[2] = 0x00; buf
[3] = 0x00;
4538 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x14, dev
->sensor_flags
, buf
);
4539 /* Writes to sensor registers 0x16: UNDOCUMENTED */
4540 /* 0x17: UNDOCUMENTED */
4541 buf
[0] = 0x00; buf
[1] = 0x00;
4542 buf
[2] = 0x00; buf
[3] = 0x00;
4543 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x16, dev
->sensor_flags
, buf
);
4544 /* Writes to sensor registers 0x18: UNDOCUMENTED */
4545 /* 0x19: UNDOCUMENTED */
4546 buf
[0] = 0x00; buf
[1] = 0x00;
4547 buf
[2] = 0x00; buf
[3] = 0x00;
4548 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x18, dev
->sensor_flags
, buf
);
4549 /* Writes to sensor registers 0x1a: UNDOCUMENTED */
4550 /* 0x1b: UNDOCUMENTED */
4551 buf
[0] = 0x00; buf
[1] = 0x00;
4552 buf
[2] = 0x00; buf
[3] = 0x00;
4553 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x1a, dev
->sensor_flags
, buf
);
4554 /* Writes to sensor registers 0x1c: UNDOCUMENTED */
4555 /* 0x1d: UNDOCUMENTED */
4556 buf
[0] = 0x00; buf
[1] = 0x00;
4557 buf
[2] = 0x00; buf
[3] = 0x00;
4558 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x1c, dev
->sensor_flags
, buf
);
4559 /* Write to sensor register 0x32: RESERVED */
4560 buf
[0] = 0x00; buf
[1] = 0x00;
4561 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x32, dev
->sensor_flags
, buf
);
4562 /* Writes to sensor registers 0x20: Read Mode */
4563 /* 0x21: RESERVED */
4564 buf
[0] = 0x11; buf
[1] = 0x01; /* output all frames (including bad frames) + UNDOCUMENTED */
4565 buf
[2] = 0x00; buf
[3] = 0x00;
4566 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x20, dev
->sensor_flags
, buf
);
4567 /* Writes to sensor registers 0x22: RESERVED */
4568 /* 0x23: UNDOCUMENTED */
4569 buf
[0] = 0x00; buf
[1] = 0x00;
4570 buf
[2] = 0x00; buf
[3] = 0x00;
4571 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x22, dev
->sensor_flags
, buf
);
4572 /* Writes to sensor registers 0x24: UNDOCUMENTED */
4573 /* 0x25: UNDOCUMENTED */
4574 buf
[0] = 0x00; buf
[1] = 0x00;
4575 buf
[2] = 0x00; buf
[3] = 0x00;
4576 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x24, dev
->sensor_flags
, buf
);
4577 /* Writes to sensor registers 0x26: UNDOCUMENTED */
4578 /* 0x27: RESERVED */
4579 buf
[0] = 0x00; buf
[1] = 0x00;
4580 buf
[2] = 0x00; buf
[3] = 0x24;
4581 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x26, dev
->sensor_flags
, buf
);
4582 /* "Dummy" write to sensor Register 0x30: RESERVED */
4583 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x30, dev
->sensor_flags
, NULL
);
4584 /* Writes to sensor registers 0x2f: RESERVED */
4585 /* 0x30: RESERVED */
4586 buf
[0] = 0xf7; buf
[1] = 0xb0;
4587 buf
[2] = 0x00; buf
[3] = 0x05;
4588 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x2f, dev
->sensor_flags
, buf
);
4589 /* Writes to sensor registers 0x31: RESERVED */
4590 /* 0x32: RESERVED */
4591 buf
[0] = 0x00; buf
[1] = 0x00;
4592 buf
[2] = 0x00; buf
[3] = 0x00;
4593 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x31, dev
->sensor_flags
, buf
);
4594 /* Writes to sensor registers 0x33: RESERVED */
4595 /* 0x34: RESERVED */
4596 buf
[0] = 0x00; buf
[1] = 0x00;
4597 buf
[2] = 0x01; buf
[3] = 0x00;
4598 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x33, dev
->sensor_flags
, buf
);
4599 /* "Dummy" write to sensor Register 0x3b: RESERVED */
4600 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x3b, dev
->sensor_flags
, NULL
);
4601 /* Write to sensor register 0x3d: RESERVED */
4602 buf
[0] = 0x06; buf
[1] = 0x8f;
4603 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x3d, dev
->sensor_flags
, buf
);
4604 /* Writes to sensor registers 0x40: RESERVED */
4605 /* 0x41: RESERVED */
4606 buf
[0] = 0x01; buf
[1] = 0xe0;
4607 buf
[2] = 0x00; buf
[3] = 0xd1;
4608 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x40, dev
->sensor_flags
, buf
);
4609 /* Write to sensor register 0x44: UNDOCUMENTED */
4610 buf
[0] = 0x00; buf
[1] = 0x82;
4611 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x44, dev
->sensor_flags
, buf
);
4612 /* Writes to sensor registers 0x5a: RESERVED */
4613 /* 0x5b: RESERVED */
4614 buf
[0] = 0x00; buf
[1] = 0x00;
4615 buf
[2] = 0x00; buf
[3] = 0x00;
4616 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x5a, dev
->sensor_flags
, buf
);
4617 /* Writes to sensor registers 0x5c: RESERVED */
4618 /* 0x5d: RESERVED */
4619 buf
[0] = 0x00; buf
[1] = 0x00;
4620 buf
[2] = 0x00; buf
[3] = 0x00;
4621 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x5c, dev
->sensor_flags
, buf
);
4622 /* Writes to sensor registers 0x5e: RESERVED */
4623 /* 0x5f: RESERVED */
4624 buf
[0] = 0x00; buf
[1] = 0x00;
4625 buf
[2] = 0xa3; buf
[3] = 0x1d;
4626 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x5e, dev
->sensor_flags
, buf
);
4627 /* "Dummy" write to sensor Register 0x68: UNDOCUMENTED */
4628 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x68, dev
->sensor_flags
, NULL
);
4629 /* Write to sensor register 0x62: RESERVED */
4630 buf
[0] = 0x06; buf
[1] = 0x11;
4631 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x62, dev
->sensor_flags
, buf
);
4634 UDIA_INFO("1 or more errors occured in I2C-message-block 1 !\n");
4637 /* END OF I2C MESSAGES */
4638 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4640 if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
4642 usb_microdia_control_write(dev
, 0x1007, buf
, 8);
4644 usb_microdia_control_write(dev
, 0x1006, buf
, 8);
4648 /* *** TEMPORARY SWITCH TO SLAVE ADDRESS 0x50, I2C READ ATTEMPT: */
4649 /* - WE CURRENTLY KNOW NO 6270 CAM THAT IS SUCCESSFULLY READ HERE */
4650 /* - IF READ FAILS, THIS IS NEVER DONE AGAIN (IN NEXT CYCLE OR FURTHER STARTS) */
4651 usb_microdia_control_read(dev
, 0x10c1, buf
, 1); /* returns 0x5c */
4653 usb_microdia_control_write(dev
, 0x10c1, buf
, 1);
4654 retI2C
= sn9c20x_read_i2c_data(dev
, 0x50, 1, 0x00, SN9C20X_I2C_2WIRE
, buf
);
4656 UDIA_INFO("Read of address 0x00 from slave 0x50 successful:\n=> Please report this to microdia@googlegroups.com (http:/* groups.google.com/group/microdia) !\n");
4658 usb_microdia_control_write(dev
, 0x10c1, buf
, 1);
4661 buf
[0] = 0x47; /* ALEX: 0x44 */
4662 usb_microdia_control_write(dev
, 0x10e0, buf
, 1); /* URB 2045 */
4663 buf
[0] = 0x47; /* ALEX: 0x04 */
4664 usb_microdia_control_write(dev
, 0x10e0, buf
, 1); /* URB 2046 */
4666 usb_microdia_control_write(dev
, 0x1001, buf
, 1); /* URB 2047 */
4668 usb_microdia_control_write(dev
, 0x1001, buf
, 1); /* URB 2048 */
4669 buf
[0] = 0x84; /* ALEX: 0xc0 */
4670 usb_microdia_control_write(dev
, 0x1001, buf
, 1); /* URB 2049 */
4673 usb_microdia_control_write(dev, 0x1001, buf, 1);
4676 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4677 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4680 /* Writes to sensor registers 0x02: Column Start */
4681 /* 0x03: Window Height */
4682 buf
[0] = 0x00; buf
[1] = 0x16; /* coulmn 22 */
4683 buf
[2] = 0x01; buf
[3] = 0xe1; /* 481 */
4684 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x02, dev
->sensor_flags
, buf
); /* URBs 2050-2052 */
4685 /* Writes to sensor registers 0x04: Window Width */
4686 /* 0x05: Horizontal Blanking */
4687 buf
[0] = 0x02; buf
[1] = 0x81; /* 641 */
4688 buf
[2] = 0x00; buf
[3] = 0x04; /* 4 columns (pixel clocks) // AT FIRST START + FIRST CYCLE: 0x00 0x00 */
4689 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x04, dev
->sensor_flags
, buf
); /* URBs 2053-2055 */
4690 /* Writes to sensor registers 0x06: Vertical Blanking */
4691 /* 0x07: Output Control */
4692 buf
[0] = 0x00; buf
[1] = 0x00; /* 0 rows */
4693 buf
[2] = 0x30; buf
[3] = 0x02; /* normal operation + chip enable + RESERVED options */
4694 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x06, dev
->sensor_flags
, buf
); /* URBs 2056-2058 */
4695 /* Write to sensor register 0x0e: UNDOCUMENTED */
4696 buf
[0] = 0x00; buf
[1] = 0x08;
4697 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0e, dev
->sensor_flags
, buf
); /* URBs 2059-2061 */
4699 UDIA_INFO("1 or more errors occured in I2C-message-block 2 !\n");
4702 /* END OF I2C MESSAGES */
4703 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4706 buf
[0] = 0x02; buf
[1] = 0x00; buf
[2] = 0x02; buf
[3] = 0x00;
4707 buf
[4] = 0x28; buf
[5] = 0x3c;
4708 usb_microdia_control_write(dev
, 0x1180, buf
, 6); /* URB 2062 */
4709 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
4710 usb_microdia_control_write(dev
, 0x10fb, buf
, 5); /* URB 2063 */
4712 usb_microdia_control_write(dev
, 0x1189, buf
, 1); /* URB 2064 */
4713 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x6a; buf
[3] = 0x50;
4714 usb_microdia_control_write(dev
, 0x11a1, buf
, 4); /* URB 2065 */
4715 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x50; buf
[3] = 0x3c;
4716 usb_microdia_control_write(dev
, 0x11ab, buf
, 4); /* URB 2066 */
4717 buf
[0] = 0x78; /* ALEX: 0x7c */
4718 usb_microdia_control_write(dev
, 0x1000, buf
, 1); /* URB 2067 */
4719 buf
[0] = 0x18; /* ALEX: 0x1c */
4720 usb_microdia_control_write(dev
, 0x1002, buf
, 1); /* URB 2068 */
4721 buf
[0] = 0x18; /* ALEX: 0x1c */
4722 usb_microdia_control_write(dev
, 0x1002, buf
, 1); /* URB 2069 */
4724 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2070 */
4726 usb_microdia_control_write(dev
, 0x118a, buf
, 1); /* URB 2071 */
4728 usb_microdia_control_write(dev
, 0x0395, buf
, 1); /* URB 2072 */
4731 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2073 */
4732 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2074 // 0x38 */
4735 else if (buf
[0] == 0xb8)
4737 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2075 */
4738 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2076 // 0xb9 */
4741 else if (buf
[0] == 0xb9)
4743 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2077 */
4744 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2078 */
4747 else if (buf
[0] == 0xba)
4749 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2079 */
4750 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2080 // 0x3b */
4753 else if (buf
[0] == 0xbb)
4755 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2081 */
4756 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2082 // 0x3c */
4759 else if (buf
[0] == 0xbc)
4761 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2083 */
4762 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2084 // 0x3d */
4763 last_11b8
[0] = buf
[0];
4764 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4767 else if (buf
[0] == 0xbd)
4769 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2085 */
4770 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2086 */
4773 else if (buf
[0] == 0xbe)
4775 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2087 */
4776 usb_microdia_control_read(dev
, 0x11b8, last_11b8
, 1); /* URB 2088 */
4778 buf
[0] = last_11b8
[0] & 0xf0; /* 0xf0 or 0x70 */
4779 buf
[0] = buf
[0] | 0x0d; /* 0x0c => THIS VALUE SEEMS TO DEPEND ON WHAT WAS READ/WRITTEN IN THE LAST 8 READS/WRITES */
4780 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2089 */
4783 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4786 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4787 /* Write to sensor register 0x06: Vertical Blanking */
4788 buf
[0] = 0x00; buf
[1] = 0x2d; /* 45 rows */
4789 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x06, dev
->sensor_flags
, buf
); /* URBs 2090-2092 */
4790 /* Write to sensor register 0x05: Horizontal Blanking */
4791 buf
[0] = 0x00; buf
[1] = 0x04; /* 4 columns (pixel clocks) */
4792 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x05, dev
->sensor_flags
, buf
); /* URBs 2093-2095 */
4793 /* Write to sensor register 0x20: Read Mode */
4794 buf
[0] = 0x00; buf
[1] = 0x00; /* normal readout */
4795 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x20, dev
->sensor_flags
, buf
); /* URBs 2096-2098 */
4796 } else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
4797 /* Write to sensor register 0x0a: Pixel Clock Speed */
4798 buf
[0] = 0x00; buf
[1] = 0x00; /* default */
4799 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0a, dev
->sensor_flags
, buf
);
4800 /* Write to sensor register 0x06: Vertical Blanking */
4801 buf
[0] = 0x00; buf
[1] = 0x29; /* 41 rows */
4802 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x06, dev
->sensor_flags
, buf
);
4803 /* Write to sensor register 0x05: Horizontal Blanking */
4804 buf
[0] = 0x00; buf
[1] = 0x09; /* 9 columns (pixel clocks) */
4805 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x05, dev
->sensor_flags
, buf
);
4806 /* Write to sensor register 0x20: Read Mode */
4807 buf
[0] = 0x11; buf
[1] = 0x01; /* output all frames (including bad ones) + UNKNOWN */
4808 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x20, dev
->sensor_flags
, buf
);
4811 UDIA_INFO("1 or more errors occured in I2C-message-block 3 !\n");
4814 /* END OF I2C MESSAGES */
4815 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4819 usb_microdia_control_write(dev
, 0x1180, buf
, 1); /* URB 2099 */
4821 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4824 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4825 /* Write to sensor register 0x20: Read Mode */
4826 buf
[0] = 0x00; buf
[1] = 0x00; /* normal readout */
4827 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x20, dev
->sensor_flags
, buf
); /* URBs 2100-2102 */
4828 } else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
4829 /* Write to sensor register 0x20: Read Mode */
4830 buf
[0] = 0x11; buf
[1] = 0x01; /* output all frames (including bad ones) + UNKNOWN */
4831 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x20, dev
->sensor_flags
, buf
);
4834 UDIA_INFO("1 or more errors occured in I2C-message-block 4 !\n");
4837 /* END OF I2C MESSAGES */
4838 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4842 usb_microdia_control_write(dev
, 0x1182, buf
, 1); /* URB 2103 */
4845 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4848 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4849 /* Write to sensor register 0x09: Shutter Width */
4850 buf
[0] = 0x00; buf
[1] = 0x64; /* integration of 100 rows */
4851 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x09, dev
->sensor_flags
, buf
); /* URBs 2104-2106 */
4852 /* Write to sensor register 0x2b: Green 1 Gain */
4853 /* 0x2c: Blue Gain */
4854 buf
[0] = 0x00; buf
[1] = 0xa0; /* 32*0.03125*2 = 2 */
4855 buf
[2] = 0x00; buf
[3] = 0xa0; /* 32*0.03125*2 = 2 */
4856 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x2b, dev
->sensor_flags
, buf
); /* URBs 2107-2109 */
4857 /* Write to sensor register 0x2d: Red Gain */
4858 /* 0x2e: Green 2 Gain */
4859 buf
[0] = 0x00; buf
[1] = 0xa0; /* 32*0.03125*2 = 2 */
4860 buf
[2] = 0x00; buf
[3] = 0xa0; /* 32*0.03125*2 = 2 */
4861 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x2d, dev
->sensor_flags
, buf
); /* URBs 2110-2112 */
4862 /* "Dummy" write to sensor Register 0x33: RESERVED */
4863 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x33, dev
->sensor_flags
, NULL
); /* URBs 2113-2114 */
4864 } else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
4865 /* Write to sensor register 0x09: Shutter Width */
4866 buf
[0] = 0x00; buf
[1] = 0x64; /* integration of 100 rows */
4867 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x09, dev
->sensor_flags
, buf
);
4868 /* Write to sensor register 0x07: Output Control */
4869 buf
[0] = 0x00; buf
[1] = 0x03; /* dont update changes until bit0=0, chip enable, normal operation */
4870 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x07, dev
->sensor_flags
, buf
);
4871 /* Write to sensor register 0x2b: Green 1 Gain */
4872 /* 0x2c: Blue Gain */
4873 buf
[0] = 0x00; buf
[1] = 0x33; /* 51*0.03125*1 = 1.59375 */
4874 buf
[2] = 0x00; buf
[3] = 0xa0; /* 32*0.03125*2 = 2 */
4875 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x2b, dev
->sensor_flags
, buf
);
4876 /* Write to sensor register 0x2d: Red Gain */
4877 /* 0x2e: Green 2 Gain */
4878 buf
[0] = 0x00; buf
[1] = 0xa0; /* 32*0.03125*2 = 2 */
4879 buf
[2] = 0x00; buf
[3] = 0x33; /* 51*0.03125*1 = 1.59375 */
4880 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x2d, dev
->sensor_flags
, buf
);
4881 /* "Dummy" write to sensor Register 0x33: RESERVED */
4882 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x33, dev
->sensor_flags
, NULL
);
4883 /* Write to sensor register 0x07: Output Control */
4884 buf
[0] = 0x00; buf
[1] = 0x02; /* chip enable, normal operation */
4885 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x07, dev
->sensor_flags
, buf
);
4888 UDIA_INFO("1 or more errors occured in I2C-message-block 5 !\n");
4891 /* END OF I2C MESSAGES */
4892 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4895 usb_microdia_control_write(dev
, 0x11ba, buf
, 1); /* URB 2119 */
4897 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
)
4899 else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
)
4901 usb_microdia_control_write(dev
, 0x118b, buf
, 1); /* URB 2124 */
4904 usb_microdia_control_write(dev
, 0x10f7, buf
, 1); /* URB 2135 */
4906 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
)
4908 else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
)
4910 usb_microdia_control_write(dev
, 0x10f8, buf
, 1); /* URB 2138 */
4912 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
)
4914 else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
)
4916 usb_microdia_control_write(dev
, 0x10fa, buf
, 1); /* URB 2139 */
4919 usb_microdia_control_write(dev
, 0x10f9, buf
, 1); /* URB 2140 */
4921 usb_microdia_control_write(dev
, 0x10f9, buf
, 1); /* URB 2141 */
4923 usb_microdia_control_write(dev
, 0x11ba, buf
, 1); /* URB 2142 */
4924 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x00;
4925 usb_microdia_control_write(dev
, 0x11bc, buf
, 4); /* URB 2143 */
4926 for (k
= 0; k
< 48; k
++)
4928 usb_microdia_control_write(dev
, 0x11c0, buf
, 48); /* URB 2144 */
4930 buf
[0] = 0x2d; buf
[1] = 0x2d; buf
[2] = 0x3a; buf
[3] = 0x05;
4931 buf
[4] = 0x04; buf
[5] = 0x3f;
4932 usb_microdia_control_write(dev
, 0x11a5, buf
, 6); /* URB 2149 */
4934 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4935 buf
[0] = 0x14; buf
[1] = 0xec; buf
[2] = 0x0a; buf
[3] = 0xf6;
4936 } else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
4937 buf
[0] = 0x28; buf
[1] = 0xd8; buf
[2] = 0x14; buf
[3] = 0xec;
4939 usb_microdia_control_write(dev
, 0x11af, buf
, 4); /* URB 2150 */
4941 buf
[0] = 0x32; buf
[1] = 0xdd; buf
[2] = 0x2d; buf
[3] = 0xdd;
4942 usb_microdia_control_write(dev
, 0x11b3, buf
, 4); /* URB 2151 */
4943 buf
[0] = 0x47; /* ALEX: 0x04 */
4944 usb_microdia_control_write(dev
, 0x10e0, buf
, 1); /* URB 2152 */
4946 usb_microdia_control_write(dev
, 0x1061, buf
, 1); /* URB 2153 */
4947 buf
[0] = 0x67; /* ALEX: 0x24 */
4948 usb_microdia_control_write(dev
, 0x10e0, buf
, 1); /* URB 2154 */
4949 buf
[0] = 0x0d; buf
[1] = 0x08; buf
[2] = 0x08; buf
[3] = 0x0d;
4950 buf
[4] = 0x08; buf
[5] = 0x08; buf
[6] = 0x0d; buf
[7] = 0x0d;
4951 buf
[8] = 0x0d; buf
[9] = 0x0d; buf
[10] = 0x11; buf
[11] = 0x0d;
4952 buf
[12] = 0x0d; buf
[13] = 0x11; buf
[14] = 0x15; buf
[15] = 0x21;
4953 buf
[16] = 0x15; buf
[17] = 0x15; buf
[18] = 0x11; buf
[19] = 0x11;
4954 buf
[20] = 0x15; buf
[21] = 0x2a; buf
[22] = 0x1d; buf
[23] = 0x1d;
4955 buf
[24] = 0x19; buf
[25] = 0x21; buf
[26] = 0x32; buf
[27] = 0x2a;
4956 buf
[28] = 0x32; buf
[29] = 0x32; buf
[30] = 0x2e; buf
[31] = 0x2a;
4957 buf
[32] = 0x2e; buf
[33] = 0x2e; buf
[34] = 0x36; buf
[35] = 0x3a;
4958 buf
[36] = 0x4b; buf
[37] = 0x43; buf
[38] = 0x36; buf
[39] = 0x3a;
4959 buf
[40] = 0x47; buf
[41] = 0x3a; buf
[42] = 0x2e; buf
[43] = 0x2e;
4960 buf
[44] = 0x43; buf
[45] = 0x5c; buf
[46] = 0x43; buf
[47] = 0x47;
4961 buf
[48] = 0x4f; buf
[49] = 0x53; buf
[50] = 0x58; buf
[51] = 0x58;
4962 buf
[52] = 0x58; buf
[53] = 0x32; buf
[54] = 0x3f; buf
[55] = 0x60;
4963 buf
[56] = 0x64; buf
[57] = 0x5c; buf
[58] = 0x53; buf
[59] = 0x64;
4964 buf
[60] = 0x4b; buf
[61] = 0x53; buf
[62] = 0x58; buf
[63] = 0x53;
4965 usb_microdia_control_write(dev
, 0x1100, buf
, 64); /* URB 2155 */
4966 buf
[0] = 0x0d; buf
[1] = 0x11; buf
[2] = 0x11; buf
[3] = 0x15;
4967 buf
[4] = 0x11; buf
[5] = 0x15; buf
[6] = 0x26; buf
[7] = 0x15;
4968 buf
[8] = 0x15; buf
[9] = 0x26; buf
[10] = 0x53; buf
[11] = 0x36;
4969 buf
[12] = 0x2e; buf
[13] = 0x36; buf
[14] = 0x53; buf
[15] = 0x53;
4970 buf
[16] = 0x53; buf
[17] = 0x53; buf
[18] = 0x53; buf
[19] = 0x53;
4971 buf
[20] = 0x53; buf
[21] = 0x53; buf
[22] = 0x53; buf
[23] = 0x53;
4972 buf
[24] = 0x53; buf
[25] = 0x53; buf
[26] = 0x53; buf
[27] = 0x53;
4973 buf
[28] = 0x53; buf
[29] = 0x53; buf
[30] = 0x53; buf
[31] = 0x53;
4974 buf
[32] = 0x53; buf
[33] = 0x53; buf
[34] = 0x53; buf
[35] = 0x53;
4975 buf
[36] = 0x53; buf
[37] = 0x53; buf
[38] = 0x53; buf
[39] = 0x53;
4976 buf
[40] = 0x53; buf
[41] = 0x53; buf
[42] = 0x53; buf
[43] = 0x53;
4977 buf
[44] = 0x53; buf
[45] = 0x53; buf
[46] = 0x53; buf
[47] = 0x53;
4978 buf
[48] = 0x53; buf
[49] = 0x53; buf
[50] = 0x53; buf
[51] = 0x53;
4979 buf
[52] = 0x53; buf
[53] = 0x53; buf
[54] = 0x53; buf
[55] = 0x53;
4980 buf
[56] = 0x53; buf
[57] = 0x53; buf
[58] = 0x53; buf
[59] = 0x53;
4981 buf
[60] = 0x53; buf
[61] = 0x53; buf
[62] = 0x53; buf
[63] = 0x53;
4982 usb_microdia_control_write(dev
, 0x1140, buf
, 64); /* URB 2156 */
4983 buf
[0] = 0x47; /* ALEX: 0x04 */
4984 usb_microdia_control_write(dev
, 0x10e0, buf
, 1); /* URB 2157 */
4986 usb_microdia_control_write(dev
, 0x1061, buf
, 1); /* URB 2158 */
4987 buf
[0] = 0x4b; /* ALEX: 0x08 */
4988 usb_microdia_control_write(dev
, 0x10e0, buf
, 1); /* URB 2159 */
4990 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4991 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4994 /* Writes to sensor registers 0x02: Column Start */
4995 /* 0x03: Window Hight */
4996 buf
[0] = 0x00; buf
[1] = 0x16; /* coulmn 22 */
4997 buf
[2] = 0x01; buf
[3] = 0xe1; /* 481 */
4998 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x02, dev
->sensor_flags
, buf
); /* URBs 2160-2162 */
4999 /* Writes to sensor registers 0x04: Window Width */
5000 /* 0x05: Horizontal Blanking */
5001 buf
[0] = 0x02; buf
[1] = 0x81; /* 641 */
5002 buf
[2] = 0x00; buf
[3] = 0x04; /* 4 columns (pixel clocks) */
5003 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x04, dev
->sensor_flags
, buf
); /* URBs 2163-2165 */
5004 /* Writes to sensor registers 0x06: Vertical Blanking */
5005 /* 0x07: Output Control */
5006 buf
[0] = 0x00; buf
[1] = 0x2d; /* 45 rows */
5007 buf
[2] = 0x30; buf
[3] = 0x02; /* RESERVED options */
5008 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x06, dev
->sensor_flags
, buf
); /* URBs 2166-2167 */
5009 /* Writes to sensor register 0x0e: UNDOCUMENTED */
5010 buf
[0] = 0x00; buf
[1] = 0x08;
5011 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0e, dev
->sensor_flags
, buf
); /* URBs 2168-2170 */
5013 UDIA_INFO("1 or more errors occured in I2C-message-block 6 !\n");
5016 /* END OF I2C MESSAGES */
5017 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
5018 } else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
5020 usb_microdia_control_write(dev
, 0x1007, buf
, 1);
5022 usb_microdia_control_write(dev
, 0x1006, buf
, 1);
5026 buf
[0] = 0x02; buf
[1] = 0x00; buf
[2] = 0x02; buf
[3] = 0x00;
5027 buf
[4] = 0x28; buf
[5] = 0x3c;
5028 usb_microdia_control_write(dev
, 0x1180, buf
, 6); /* URB 2171 */
5029 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
5030 usb_microdia_control_write(dev
, 0x10fb, buf
, 5); /* URB 2172 */
5032 usb_microdia_control_write(dev
, 0x1189, buf
, 1); /* URB 2173 */
5033 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x6a; buf
[3] = 0x50;
5034 usb_microdia_control_write(dev
, 0x11a1, buf
, 4); /* URB 2174 */
5035 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x50; buf
[3] = 0x3c;
5036 usb_microdia_control_write(dev
, 0x11ab, buf
, 4); /* URB 2175 */
5038 usb_microdia_control_write(dev
, 0x1061, buf
, 1); /* URB 2176 */
5040 usb_microdia_control_write(dev
, 0x11ba, buf
, 1); /* URB 2177 */
5042 usb_microdia_control_write(dev
, 0x11b9, buf
, 1); /* URB 2178 */
5044 usb_microdia_control_write(dev
, 0x11ba, buf
, 1); /* URB 2179 */
5046 usb_microdia_control_write(dev
, 0x1061, buf
, 1); /* URB 2180 */
5047 buf
[0] = 0x78; /* ALEX: 0x7c */
5048 usb_microdia_control_write(dev
, 0x1000, buf
, 1); /* URB 2181 */
5049 buf
[0] = 0x18; /* ALEX: 0x1c */
5050 usb_microdia_control_write(dev
, 0x1002, buf
, 1); /* URB 2182 */
5051 buf
[0] = 0x18; /* ALEX: 0x1c */
5052 usb_microdia_control_write(dev
, 0x1002, buf
, 1); /* URB 2183 */
5053 buf
[0] = 0x7d; /* ALEX: 0xfc */
5054 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2184 */
5056 usb_microdia_control_write(dev
, 0x118a, buf
, 1); /* URB 2185 */
5058 usb_microdia_control_write(dev
, 0x0395, buf
, 1); /* URB 2186 */
5060 if ((last_11b8
[0] == 0x3d) || (last_11b8
[0] == 0x3f))
5062 else if ((last_11b8
[0] == 0xbd) || (last_11b8
[0] == 0xbf))
5064 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2187 */
5065 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2188 // 0x38 */
5068 else if (buf
[0] == 0xb8)
5070 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2189 */
5071 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2190 // 0xb9 */
5074 else if (buf
[0] == 0xb9)
5076 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2191 */
5077 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2192 // 0xba */
5080 else if (buf
[0] == 0xba)
5082 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2193 */
5083 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2194 // 0x3b */
5086 else if (buf
[0] == 0xbb)
5088 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2195 */
5089 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2196 // 0x3c */
5092 else if (buf
[0] == 0xbc)
5094 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2197 */
5095 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2198 // 0x3d */
5096 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
5099 else if (buf
[0] == 0xbd)
5101 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2199 */
5102 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2200 */
5105 else if (buf
[0] == 0xbe)
5107 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2201 */
5108 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2202 */
5110 buf
[0] = buf
[0] & 0xf0; /* 0xf0 or 0x70 */
5111 buf
[0] = buf
[0] | 0x0d; /* 0x0c => THIS VALUE SEEMS TO DEPEND ON WHAT WAS READ/WRITTEN IN THE LAST 8 READS/WRITES */
5112 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2089 */
5114 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
5117 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
5118 /* Write to sensor register 0x06: Vertical Blanking */
5119 buf
[0] = 0x00; buf
[1] = 0x2d; /* 45 rows */
5120 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x06, dev
->sensor_flags
, buf
); /* URBs 2204-2206 */
5121 /* Write to sensor register 0x05: Horizontal Blanking */
5122 buf
[0] = 0x00; buf
[1] = 0x04; /* 4 columns (pixel clocks) */
5123 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x05, dev
->sensor_flags
, buf
); /* URBs 2207-2209 */
5124 /* Read of sensor register 0x36: Chip Version (mirror of reg0xff) */
5125 retI2C
+= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x36, dev
->sensor_flags
, buf
); /* URBs 2211-2215 // 0x82 0x3a */
5126 } else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
5127 /* Write to sensor register 0x0a: Pixel Clock Speed */
5128 buf
[0] = 0x00; buf
[1] = 0x00; /* default */
5129 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x06, dev
->sensor_flags
, buf
);
5130 /* Write to sensor register 0x06: Vertical Blanking */
5131 buf
[0] = 0x00; buf
[1] = 0x29; /* 41 rows */
5132 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x06, dev
->sensor_flags
, buf
);
5133 /* Write to sensor register 0x05: Horizontal Blanking */
5134 buf
[0] = 0x00; buf
[1] = 0x09; /* 9 columns (pixel clocks) */
5135 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x05, dev
->sensor_flags
, buf
);
5136 /* Read of sensor register 0x00: Chip Version (=reg0xff) */
5137 retI2C
+= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x00, dev
->sensor_flags
, buf
); /* 0x82 0x43 */
5140 UDIA_INFO("1 or more errors occured in I2C-message-block 7 !\n");
5143 /* END OF I2C MESSAGES */
5144 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
5148 usb_microdia_control_write(dev
, 0x1061, buf
, 1); /* URB 2216 */
5151 /*** NOW DRIVER DOES STOP-SEQUENCE
5152 - WITHOUT WRITES TO 0x1007 AND 0x1006 (URBs 3544-3550) => MT9V111
5153 - WRITING 0x40 INSTEAD OF 0x60 TO 0x1007 AND 0x1006 => MT9V011
5155 /*** 2nd, 3rd, ... CYCLE: ALL MESSAGES (URBs 1953 - URBs 2216) ARE REPEATED ***/
5156 /*** ----- WE DON'T DO THIS, IT SEEMS TO BE UNNECESSARY ----- ***/
5158 /* Setup IFP registers for AE and AWB (new, not in the logs): */
5159 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
5160 mt9v111_setup_autoexposure(dev
);
5161 mt9v111_setup_autowhitebalance(dev
);
5162 mt9v111_set_autocorrections(dev
, 1);
5165 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
)
5167 else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
)
5169 usb_microdia_control_write(dev
, 0x1007, buf
, 1); /* URB 2489 */
5170 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
)
5172 else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
)
5174 usb_microdia_control_write(dev
, 0x1006, buf
, 1); /* URB 2490 */
5175 /* => These two writes seem to cause the cam to start sending isochronus USB messages */
5180 int microdia_627b_start_stream(struct usb_microdia
*dev
)
5187 buf
[0] = 0x00; /** Will have to be set for every single interrupt. */
5189 ret = usb_interrupt_msg(dev->udev, 0x00000083, buf, 0x0000001, &actual, 1000); // URB 43
5194 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 44 */
5199 //ret = usb_set_interface(dev->udev, 0, 8);
5200 //if(ret < 0) goto err;
5202 //buf[0] = 0x00; // Will have to be set for every single interrupt
5203 //ret = usb_interrupt_msg(dev->udev, 0x00000083, buf, 0x0000001, &actual, 1000); // URB 45
5208 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 46 */
5214 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 47 */
5220 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 48 */
5226 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 49 */
5232 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 50 */
5237 buf
[0] = 0x40; buf
[1] = 0x30; buf
[2] = 0x20; buf
[3] = 0x10; buf
[4] = 0x08;
5238 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5); /* URB 51 */
5243 buf
[0] = 0x80; buf
[1] = 0x21; buf
[2] = 0x00; buf
[3] = 0x00;
5244 buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x00;
5246 ret
= usb_microdia_control_write(dev
, reg
, buf
, 9); /* URB 52 */
5250 /* transferbufferlength is 18, but data is 24 bytes long, what to do ? */
5252 buf
[0] = 0x45; buf
[1] = 0x18; buf
[2] = 0x00; buf
[3] = 0x30; buf
[4] = 0x00;
5253 buf
[5] = 0x09; buf
[6] = 0x00; buf
[7] = 0xed; buf
[8] = 0x0f; buf
[9] = 0xda;
5254 buf
[10] = 0x0f; buf
[11] = 0x3a; buf
[12] = 0x00; buf
[13] = 0x3a; buf
[14] = 0x00;
5255 buf
[15] = 0xd0; buf
[16] = 0x0f; buf
[17] = 0xf7; buf
[18] = 0x0f; buf
[19] = 0x00;
5256 buf
[20] = 0x00; buf
[21] = 0x00; buf
[22] = 0x60; buf
[23] = 0x0a;
5257 ret
= usb_microdia_control_write(dev
, reg
, buf
, 24); /* URB 53 */
5262 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00;
5263 ret
= usb_microdia_control_write(dev
, reg
, buf
, 3); /* URB 54 */
5268 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
5269 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5); /* URB 55 */
5274 buf
[0] = 0x86; buf
[1] = 0x8c; buf
[2] = 0x08;
5275 ret
= usb_microdia_control_write(dev
, reg
, buf
, 3); /* URB 56 */
5280 buf
[0] = 0x00; buf
[1] = 0x20; buf
[2] = 0x20; buf
[3] = 0x20; buf
[4] = 0x20;
5281 buf
[5] = 0x00; buf
[6] = 0x24; buf
[7] = 0x3b; buf
[8] = 0x4f; buf
[9] = 0x61;
5282 buf
[10] = 0x71; buf
[11] = 0x80; buf
[12] = 0x8f; buf
[13] = 0x9d; buf
[14] = 0xab;
5283 buf
[15] = 0xb8; buf
[16] = 0xc4; buf
[17] = 0xd1; buf
[18] = 0xdd; buf
[19] = 0xe9;
5284 buf
[20] = 0xf4; buf
[21] = 0xff;
5285 ret
= usb_microdia_control_write(dev
, reg
, buf
, 22); /* URB 57 */
5290 buf
[0] = 0x00; buf
[1] = 0x00;
5291 ret
= usb_microdia_control_write(dev
, reg
, buf
, 2); /* URB 58 */
5296 buf
[0] = 0x60; buf
[1] = 0x28; buf
[2] = 0x00; buf
[3] = 0x08; buf
[4] = 0x00;
5297 buf
[5] = 0x40; buf
[6] = 0x01; buf
[7] = 0xf0; buf
[8] = 0x00;
5298 ret
= usb_microdia_control_write(dev
, reg
, buf
, 9); /* URB 59 */
5304 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 60 */
5310 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5315 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5316 OV7660_CTL_COM7
, dev
->sensor_flags
, buf
);
5320 buf
[0] = 0x01; buf
[1] = 0x74; buf
[2] = 0x92; buf
[3] = 0x00;
5321 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5322 OV7660_CTL_GAIN
, dev
->sensor_flags
, buf
);
5326 buf
[0] = 0x00; buf
[1] = 0x7d; buf
[2] = 0x62; buf
[3] = 0x00;
5327 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5328 OV7660_CTL_COM1
, dev
->sensor_flags
, buf
);
5332 buf
[0] = 0x83; buf
[1] = 0x01;
5333 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
5334 OV7660_CTL_RAVE
, dev
->sensor_flags
, buf
);
5338 buf
[0] = 0x00; buf
[1] = 0x08; buf
[2] = 0x04; buf
[3] = 0x62;
5339 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5340 OV7660_CTL_COM3
, dev
->sensor_flags
, buf
);
5344 buf
[0] = 0x00; buf
[1] = 0x40; buf
[2] = 0x05; buf
[3] = 0xf8;
5345 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5346 OV7660_CTL_AECH
, dev
->sensor_flags
, buf
);
5350 buf
[0] = 0x2e; buf
[1] = 0x00; buf
[2] = 0x02;
5351 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 3,
5352 OV7660_CTL_COM9
, dev
->sensor_flags
, buf
);
5356 buf
[0] = 0x10; buf
[1] = 0x60; buf
[2] = 0x02; buf
[3] = 0x7b;
5357 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5358 OV7660_CTL_HSTART
, dev
->sensor_flags
, buf
);
5363 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5364 OV7660_CTL_PSHFT
, dev
->sensor_flags
, buf
);
5368 buf
[0] = 0x01; buf
[1] = 0x0e;
5369 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
5370 OV7660_CTL_MVFP
, dev
->sensor_flags
, buf
);
5374 buf
[0] = 0x07; buf
[1] = 0x07; buf
[2] = 0x07; buf
[3] = 0x07;
5375 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5376 OV7660_CTL_BOS
, dev
->sensor_flags
, buf
);
5380 buf
[0] = 0x68; buf
[1] = 0x58; buf
[2] = 0xd4; buf
[3] = 0x80;
5381 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5382 OV7660_CTL_AEW
, dev
->sensor_flags
, buf
);
5386 buf
[0] = 0x80; buf
[1] = 0x3c; buf
[2] = 0x00; buf
[3] = 0x00;
5387 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5388 OV7660_CTL_GbBIAS
, dev
->sensor_flags
, buf
);
5392 buf
[0] = 0x80; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x62;
5393 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5394 OV7660_CTL_RBIAS
, dev
->sensor_flags
, buf
);
5398 buf
[0] = 0x08; buf
[1] = 0x30; buf
[2] = 0xb4;
5399 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 3,
5400 OV7660_CTL_HSYST
, dev
->sensor_flags
, buf
);
5404 buf
[0] = 0x00; buf
[1] = 0x07; buf
[2] = 0x84; buf
[3] = 0x00;
5405 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5406 OV7660_CTL_CHLF
, dev
->sensor_flags
, buf
);
5410 buf
[0] = 0x0c; buf
[1] = 0x02; buf
[2] = 0x43; buf
[3] = 0x00;
5411 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5412 OV7660_CTL_ADC
, dev
->sensor_flags
, buf
);
5416 buf
[0] = 0x02; buf
[1] = 0x6c; buf
[2] = 0x19; buf
[3] = 0x0e;
5417 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5418 OV7660_CTL_COM11
, dev
->sensor_flags
, buf
);
5422 buf
[0] = 0x41; buf
[1] = 0xc1; buf
[2] = 0x22; buf
[3] = 0x08;
5423 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5424 OV7660_CTL_EDGE
, dev
->sensor_flags
, buf
);
5429 reg
= 0x43; /* RSVD 0x43 is Reserved */
5430 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0,
5431 reg
, dev
->sensor_flags
, NULL
);
5435 reg
= 0x43; /* RSVD 0x43 is Reserved */
5436 buf
[0] = 0xf0; buf
[1] = 0x10; buf
[2] = 0x78; buf
[3] = 0xa8;
5437 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, reg
,
5438 dev
->sensor_flags
, buf
);
5442 reg
= 0x47; /* RSVD 0x47 is Reserved */
5443 buf
[0] = 0x60; buf
[1] = 0x80; buf
[2] = 0x00; buf
[3] = 0x00;
5444 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, reg
,
5445 dev
->sensor_flags
, buf
);
5449 reg
= 0x4b; /* RSVD 0x4b is Reserved */
5450 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x00;
5451 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, reg
,
5452 dev
->sensor_flags
, buf
);
5457 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0,
5458 OV7660_CTL_MTX1
, dev
->sensor_flags
, NULL
);
5462 reg
= 0x59; /* RSVD 0x59 is Reserved */
5463 buf
[0] = 0xba; buf
[1] = 0x9a; buf
[2] = 0x22; buf
[3] = 0xb9;
5464 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5465 reg
, dev
->sensor_flags
, buf
);
5469 reg
= 0x5d; /* RSVD 0x5d is Reserved */
5470 buf
[0] = 0x9b; buf
[1] = 0x10; buf
[2] = 0xf0; buf
[3] = 0x05;
5471 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5472 reg
, dev
->sensor_flags
, buf
);
5476 reg
= 0x61; /* RSVD 0x61 is Reserved */
5478 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5479 reg
, dev
->sensor_flags
, buf
);
5483 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x50; buf
[3] = 0x30;
5484 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5485 OV7660_CTL_LCC1
, dev
->sensor_flags
, buf
);
5490 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5491 OV7660_CTL_LCC5
, dev
->sensor_flags
, buf
);
5495 buf
[0] = 0x80; buf
[1] = 0x7a; buf
[2] = 0x90; buf
[3] = 0x80;
5496 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5497 OV7660_CTL_MANU
, dev
->sensor_flags
, buf
);
5502 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5503 OV7660_CTL_DBLV
, dev
->sensor_flags
, buf
);
5507 reg
= 0x8b; /* RSVD 0x8b is Reserved */
5508 buf
[0] = 0x99; buf
[1] = 0x99; buf
[2] = 0xcf;
5509 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 3, reg
,
5510 dev
->sensor_flags
, buf
);
5514 buf
[0] = 0x00; buf
[1] = 0x00;
5515 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
5516 OV7660_CTL_DM_LNL
, dev
->sensor_flags
, buf
);
5522 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5528 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5533 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
5539 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5543 /* TRY TO READ FROM EEPROM: */
5545 ret
= sn9c20x_read_i2c_data(dev
, 0x50, 1, reg
, SN9C20X_I2C_2WIRE
, buf
);
5547 UDIA_INFO("No EEPROM found\n");
5549 UDIA_INFO("Read from EEPROM successful\n");
5553 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5559 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5565 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5571 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5577 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5583 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5588 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5589 OV7660_CTL_VREF
, dev
->sensor_flags
, buf
);
5593 buf
[0] = 0x10; buf
[1] = 0x61; buf
[2] = 0x02; buf
[3] = 0x7a;
5594 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5595 OV7660_CTL_HSTART
, dev
->sensor_flags
, buf
);
5599 /* "Dummy" write: */
5600 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0,
5601 OV7660_CTL_PSHFT
, dev
->sensor_flags
, NULL
);
5606 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5607 OV7660_CTL_HREF
, dev
->sensor_flags
, buf
);
5612 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5613 OV7660_CTL_HREF
, dev
->sensor_flags
, buf
);
5618 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5619 OV7660_CTL_HREF
, dev
->sensor_flags
, buf
);
5624 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5625 OV7660_CTL_HREF
, dev
->sensor_flags
, buf
);
5630 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5631 OV7660_CTL_HREF
, dev
->sensor_flags
, buf
);
5636 buf
[0] = 0x01; buf
[1] = 0x00; buf
[2] = 0x01; buf
[3] = 0x00; buf
[4] = 0x28;
5638 ret
= usb_microdia_control_write(dev
, reg
, buf
, 6);
5643 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
5644 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5);
5650 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5655 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x6a; buf
[3] = 0x50;
5656 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
5661 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x50; buf
[3] = 0x3c;
5662 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
5668 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5674 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5680 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5686 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5692 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5698 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5704 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5707 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
5713 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5716 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
5722 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5725 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
5731 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5734 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
5740 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5743 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
5749 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5752 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
5758 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5763 //ret = usb_microdia_control_read(dev, reg, buf, 1);
5764 //if(ret < 0) goto err;
5768 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5769 OV7660_CTL_CLKRC
, dev
->sensor_flags
, buf
);
5774 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5775 OV7660_CTL_EXHCH
, dev
->sensor_flags
, buf
);
5780 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5781 OV7660_CTL_EXHCL
, dev
->sensor_flags
, buf
);
5786 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5787 OV7660_CTL_DM_LNL
, dev
->sensor_flags
, buf
);
5792 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5793 OV7660_CTL_DM_LNH
, dev
->sensor_flags
, buf
);
5798 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5799 OV7660_CTL_MVFP
, dev
->sensor_flags
, buf
);
5804 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5805 OV7660_CTL_MVFP
, dev
->sensor_flags
, buf
);
5810 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5811 OV7660_CTL_VREF
, dev
->sensor_flags
, buf
);
5816 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5817 OV7660_CTL_VREF
, dev
->sensor_flags
, buf
);
5822 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5823 OV7660_CTL_AECH
, dev
->sensor_flags
, buf
);
5828 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5829 OV7660_CTL_COM1
, dev
->sensor_flags
, buf
);
5834 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5835 OV7660_CTL_ADVFL
, dev
->sensor_flags
, buf
);
5840 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5841 OV7660_CTL_ADVFH
, dev
->sensor_flags
, buf
);
5846 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5847 OV7660_CTL_GAIN
, dev
->sensor_flags
, buf
);
5851 buf
[0] = 0x78; buf
[1] = 0x78;
5852 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
5853 OV7660_CTL_BLUE
, dev
->sensor_flags
, buf
);
5859 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5865 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5871 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5877 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5883 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5889 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5895 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5901 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5906 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x00;
5907 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
5912 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00;
5913 buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x00; buf
[8] = 0x00; buf
[9] = 0x00;
5914 buf
[10] = 0x00; buf
[11] = 0x00; buf
[12] = 0x00; buf
[13] = 0x00; buf
[14] = 0x00;
5915 buf
[15] = 0x00; buf
[16] = 0x00; buf
[17] = 0x00; buf
[18] = 0x00; buf
[19] = 0x00;
5916 buf
[20] = 0x00; buf
[21] = 0x00; buf
[22] = 0x00; buf
[23] = 0x00; buf
[24] = 0x00;
5917 buf
[25] = 0x00; buf
[26] = 0x00; buf
[27] = 0x00; buf
[28] = 0x00; buf
[29] = 0x00;
5918 buf
[30] = 0x00; buf
[31] = 0x00; buf
[32] = 0x00;
5919 ret
= usb_microdia_control_write(dev
, reg
, buf
, 33);
5922 /* transferbufferlength was only 30 ? */
5925 buf
[0] = 0x2d; buf
[1] = 0x2d; buf
[2] = 0x3a; buf
[3] = 0x05; buf
[4] = 0x04;
5927 ret
= usb_microdia_control_write(dev
, reg
, buf
, 6);
5932 buf
[0] = 0x28; buf
[1] = 0xd8; buf
[2] = 0x14; buf
[3] = 0xec;
5933 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
5938 buf
[0] = 0x32; buf
[1] = 0xdd; buf
[2] = 0x32; buf
[3] = 0xdd;
5939 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
5945 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5951 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5957 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5962 buf
[0] = 0x0d; buf
[1] = 0x08; buf
[2] = 0x08; buf
[3] = 0x0d; buf
[4] = 0x08;
5963 buf
[5] = 0x08; buf
[6] = 0x0d; buf
[7] = 0x0d; buf
[8] = 0x0d; buf
[9] = 0x0d;
5964 buf
[10] = 0x11; buf
[11] = 0x0d; buf
[12] = 0x0d; buf
[13] = 0x11; buf
[14] = 0x15;
5965 buf
[15] = 0x21; buf
[16] = 0x15; buf
[17] = 0x15; buf
[18] = 0x11; buf
[19] = 0x11;
5966 buf
[20] = 0x15; buf
[21] = 0x2a; buf
[22] = 0x1d; buf
[23] = 0x1d; buf
[24] = 0x19;
5967 buf
[25] = 0x21; buf
[26] = 0x32; buf
[27] = 0x2a; buf
[28] = 0x32; buf
[29] = 0x32;
5968 buf
[30] = 0x2e; buf
[31] = 0x2a; buf
[32] = 0x2e; buf
[33] = 0x2e; buf
[34] = 0x36;
5969 buf
[35] = 0x3a; buf
[36] = 0x4b; buf
[37] = 0x43; buf
[38] = 0x36; buf
[39] = 0x3a;
5970 buf
[40] = 0x47; buf
[41] = 0x3a; buf
[42] = 0x2e; buf
[43] = 0x2e; buf
[44] = 0x43;
5971 buf
[45] = 0x5c; buf
[46] = 0x43; buf
[47] = 0x47; buf
[48] = 0x4f; buf
[49] = 0x53;
5972 buf
[50] = 0x58; buf
[51] = 0x58; buf
[52] = 0x58; buf
[53] = 0x32; buf
[54] = 0x3f;
5973 buf
[55] = 0x60; buf
[56] = 0x64; buf
[57] = 0x5c; buf
[58] = 0x53; buf
[59] = 0x64;
5974 buf
[60] = 0x4b; buf
[61] = 0x53; buf
[62] = 0x58; buf
[63] = 0x53;
5975 ret
= usb_microdia_control_write(dev
, reg
, buf
, 64);
5978 /* transferbufferlength is only 40 ? */
5981 buf
[0] = 0x0d; buf
[1] = 0x11; buf
[2] = 0x11; buf
[3] = 0x15; buf
[4] = 0x11;
5982 buf
[5] = 0x15; buf
[6] = 0x26; buf
[7] = 0x15; buf
[8] = 0x15; buf
[9] = 0x26;
5983 buf
[10] = 0x53; buf
[11] = 0x36; buf
[12] = 0x2e; buf
[13] = 0x36; buf
[14] = 0x53;
5984 buf
[15] = 0x53; buf
[16] = 0x53; buf
[17] = 0x53; buf
[18] = 0x53; buf
[19] = 0x53;
5985 buf
[20] = 0x53; buf
[21] = 0x53; buf
[22] = 0x53; buf
[23] = 0x53; buf
[24] = 0x53;
5986 buf
[25] = 0x53; buf
[26] = 0x53; buf
[27] = 0x53; buf
[28] = 0x53; buf
[29] = 0x53;
5987 buf
[30] = 0x53; buf
[31] = 0x53; buf
[32] = 0x53; buf
[33] = 0x53; buf
[34] = 0x53;
5988 buf
[35] = 0x53; buf
[36] = 0x53; buf
[37] = 0x53; buf
[38] = 0x53; buf
[39] = 0x53;
5989 buf
[40] = 0x53; buf
[41] = 0x53; buf
[42] = 0x53; buf
[43] = 0x53; buf
[44] = 0x53;
5990 buf
[45] = 0x53; buf
[46] = 0x53; buf
[47] = 0x53; buf
[48] = 0x53; buf
[49] = 0x53;
5991 buf
[50] = 0x53; buf
[51] = 0x53; buf
[52] = 0x53; buf
[53] = 0x53; buf
[54] = 0x53;
5992 buf
[55] = 0x53; buf
[56] = 0x53; buf
[57] = 0x53; buf
[58] = 0x53; buf
[59] = 0x53;
5993 buf
[60] = 0x53; buf
[61] = 0x53; buf
[62] = 0x53; buf
[63] = 0x53;
5994 ret
= usb_microdia_control_write(dev
, reg
, buf
, 64);
5997 /* transferbufferlength is only 40 ? */
6001 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6007 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6013 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6018 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6019 OV7660_CTL_VREF
, dev
->sensor_flags
, buf
);
6024 buf
[0] = 0x01; buf
[1] = 0x00; buf
[2] = 0x01; buf
[3] = 0x00; buf
[4] = 0x28;
6026 ret
= usb_microdia_control_write(dev
, reg
, buf
, 6);
6031 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
6032 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5);
6038 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6043 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x6a; buf
[3] = 0x50;
6044 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
6049 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x50; buf
[3] = 0x3c;
6050 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
6056 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6062 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6068 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6074 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6080 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6086 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6092 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6098 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6104 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6110 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6116 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6122 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6125 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6131 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6134 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6140 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6143 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6149 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6152 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6158 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6161 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6167 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6170 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6176 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6181 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6182 OV7660_CTL_CLKRC
, dev
->sensor_flags
, buf
);
6187 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6188 OV7660_CTL_EXHCH
, dev
->sensor_flags
, buf
);
6193 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6194 OV7660_CTL_EXHCL
, dev
->sensor_flags
, buf
);
6199 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6200 OV7660_CTL_DM_LNL
, dev
->sensor_flags
, buf
);
6205 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6206 OV7660_CTL_DM_LNH
, dev
->sensor_flags
, buf
);
6210 ret
= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6211 OV7660_CTL_PID
, dev
->sensor_flags
, buf
);
6215 ret
= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6216 OV7660_CTL_VER
, dev
->sensor_flags
, buf
);
6220 ret
= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6221 OV7660_CTL_MIDH
, dev
->sensor_flags
, buf
);
6225 ret
= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6226 OV7660_CTL_MIDL
, dev
->sensor_flags
, buf
);
6232 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6238 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6244 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6250 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6256 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6261 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6262 OV7660_CTL_AECH
, dev
->sensor_flags
, buf
);
6267 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6268 OV7660_CTL_COM1
, dev
->sensor_flags
, buf
);
6273 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6274 OV7660_CTL_GAIN
, dev
->sensor_flags
, buf
);
6278 buf
[0] = 0x00; buf
[1] = 0x01;
6279 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
6280 OV7660_CTL_ADVFL
, dev
->sensor_flags
, buf
);
6285 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6286 OV7660_CTL_GAIN
, dev
->sensor_flags
, buf
);
6290 buf
[0] = 0x50; buf
[1] = 0x60;
6291 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
6292 OV7660_CTL_BLUE
, dev
->sensor_flags
, buf
);
6296 buf
[0] = 0xfc; buf
[1] = 0x04;
6297 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
6298 OV7660_CTL_ADVFL
, dev
->sensor_flags
, buf
);
6302 buf
[0] = 0x1f; buf
[1] = 0x00;
6303 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
6304 OV7660_CTL_GAIN
, dev
->sensor_flags
, buf
);
6308 buf
[0] = 0x48; buf
[1] = 0x58;
6309 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
6310 OV7660_CTL_BLUE
, dev
->sensor_flags
, buf
);
6314 buf
[0] = 0xf6; buf
[1] = 0x0b;
6315 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
6316 OV7660_CTL_ADVFL
, dev
->sensor_flags
, buf
);
6322 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6326 buf
[0] = 0x50; buf
[1] = 0x60;
6327 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
6328 OV7660_CTL_BLUE
, dev
->sensor_flags
, buf
);
6334 UDIA_ERROR("r/w in bridge register %x failed (%d)!\n", reg
, ret
);
6338 UDIA_ERROR("r/w in sensor register %x failed (%d)!\n", reg
, ret
);
6344 * @brief From UsbSnoop-plugin-parsed.log
6348 * @returns 0 (OK) or <0 (Error)
6350 * @author Vincent, Kuzja
6352 int microdia_6288_start_stream(struct usb_microdia
*dev
)
6362 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6368 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6374 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6380 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6386 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6392 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6397 buf
[0] = 0x40; buf
[1] = 0x30; buf
[2] = 0x20;
6398 buf
[3] = 0x10; buf
[4] = 0x08;
6399 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5);
6404 buf
[0] = 0x80; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x00; buf
[8] = 0x03;
6405 ret
= usb_microdia_control_write(dev
, reg
, buf
, 9);
6410 buf
[0] = 0x44; buf
[1] = 0x18; buf
[2] = 0x00; buf
[3] = 0x30;
6411 buf
[4] = 0x00; buf
[5] = 0x09; buf
[6] = 0x00; buf
[7] = 0xed;
6412 buf
[8] = 0x0f; buf
[9] = 0xda; buf
[10] = 0x0f; buf
[11] = 0x3a;
6413 buf
[12] = 0x00; buf
[13] = 0x3a; buf
[14] = 0x00; buf
[15] = 0xd0;
6414 buf
[16] = 0x0f; buf
[17] = 0xf7; buf
[18] = 0x0f; buf
[19] = 0x00;
6415 buf
[20] = 0x00; buf
[21] = 0x00; buf
[22] = 0x60; buf
[23] = 0x0a;
6416 ret
= usb_microdia_control_write(dev
, reg
, buf
, 24);
6421 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00;
6422 ret
= usb_microdia_control_write(dev
, reg
, buf
, 3);
6427 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
6428 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5);
6433 buf
[0] = 0x86; buf
[1] = 0xcc; buf
[2] = 0x08;
6434 ret
= usb_microdia_control_write(dev
, reg
, buf
, 3);
6439 buf
[0] = 0x00; buf
[1] = 0x20; buf
[2] = 0x20; buf
[3] = 0x20;
6440 buf
[4] = 0x20; buf
[5] = 0x00; buf
[6] = 0x24; buf
[7] = 0x3b;
6441 buf
[8] = 0x4f; buf
[9] = 0x61; buf
[10] = 0x71; buf
[11] = 0x80;
6442 buf
[12] = 0x8f; buf
[13] = 0x9d; buf
[14] = 0xab; buf
[15] = 0xb8;
6443 buf
[16] = 0xc4; buf
[17] = 0xd1; buf
[18] = 0xdd; buf
[19] = 0xe9;
6444 buf
[20] = 0xf4; buf
[21] = 0xff;
6445 ret
= usb_microdia_control_write(dev
, reg
, buf
, 22);
6450 buf
[0] = 0x00; buf
[1] = 0x00;
6451 ret
= usb_microdia_control_write(dev
, reg
, buf
, 2);
6456 buf
[0] = 0x60; buf
[1] = 0x20; buf
[2] = 0x00; buf
[3] = 0x08;
6457 buf
[4] = 0x00; buf
[5] = 0x40; buf
[6] = 0x01; buf
[7] = 0xf0;
6459 ret
= usb_microdia_control_write(dev
, reg
, buf
, 9);
6465 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6471 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6476 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x12; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6477 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6482 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6487 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6492 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x12; buf
[3] = 0x01; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6493 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6498 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6503 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6508 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x0d; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6509 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6514 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6519 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6524 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x0e; buf
[3] = 0x61; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6525 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6530 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6535 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6540 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x11; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6541 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6546 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6551 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6556 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x13; buf
[3] = 0xb8; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6557 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6562 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6567 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6572 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x14; buf
[3] = 0x3e; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6573 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6578 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6583 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6588 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x16; buf
[3] = 0x24; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6589 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6594 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6599 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6604 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x1e; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6605 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6610 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6615 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6620 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x1e; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6621 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6626 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6631 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6636 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x1e; buf
[3] = 0x04; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6637 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6642 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6647 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6652 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x27; buf
[3] = 0x08; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6653 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6658 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6663 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6668 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x28; buf
[3] = 0x08; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6669 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6674 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6679 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6684 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x29; buf
[3] = 0x15; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6685 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6690 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6695 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6700 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2c; buf
[3] = 0x08; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6701 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6706 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6711 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6716 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x32; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6717 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6722 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6727 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6732 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x34; buf
[3] = 0x3d; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6733 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6738 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6743 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6748 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x35; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6749 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6754 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6759 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6764 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x36; buf
[3] = 0xf8; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6765 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6770 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6775 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6780 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x38; buf
[3] = 0x12; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6781 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6786 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6791 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6796 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x39; buf
[3] = 0x57; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6797 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6802 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6807 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6812 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x3a; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6813 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6818 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6823 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6828 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x3b; buf
[3] = 0xcc; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6829 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6834 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6839 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6844 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x3c; buf
[3] = 0x0c; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6845 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6850 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6855 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6860 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x3d; buf
[3] = 0x19; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6861 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6866 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6871 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6876 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x3e; buf
[3] = 0x0c; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6877 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6882 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6887 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6892 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x3f; buf
[3] = 0x01; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6893 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6898 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6903 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6908 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x41; buf
[3] = 0x40; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6909 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6914 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6919 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6924 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x42; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6925 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6930 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6935 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6940 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x45; buf
[3] = 0x46; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6941 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6946 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6951 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6956 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x46; buf
[3] = 0x62; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6957 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6962 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6967 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6972 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x47; buf
[3] = 0x2a; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6973 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6978 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6983 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6988 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x48; buf
[3] = 0x3c; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6989 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6994 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6999 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7004 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x4a; buf
[3] = 0xf0; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7005 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7010 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7015 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7020 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x4b; buf
[3] = 0xdc; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7021 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7026 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7031 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7036 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x4c; buf
[3] = 0xdc; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7037 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7042 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7047 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7052 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x4d; buf
[3] = 0xdc; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7053 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7058 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7063 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7068 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x4e; buf
[3] = 0xdc; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7069 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7074 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7079 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7084 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x69; buf
[3] = 0x02; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7085 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7090 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7095 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7100 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x6c; buf
[3] = 0x04; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7101 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7106 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7111 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7116 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x6f; buf
[3] = 0x9e; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7117 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7122 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7127 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7132 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x70; buf
[3] = 0x05; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7133 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7138 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7143 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7148 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x71; buf
[3] = 0x78; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7149 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7154 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7159 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7164 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x77; buf
[3] = 0x02; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7165 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7170 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7175 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7180 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x8a; buf
[3] = 0x23; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7181 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7186 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7191 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7196 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x8c; buf
[3] = 0x0d; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7197 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7202 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7207 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7212 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x90; buf
[3] = 0x7e; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7213 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7218 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7223 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7228 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x91; buf
[3] = 0x7c; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7229 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7234 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7239 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7244 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x9f; buf
[3] = 0x6e; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7245 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7250 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7255 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7260 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa0; buf
[3] = 0x6e; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7261 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7266 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7271 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7276 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa4; buf
[3] = 0x50; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7277 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7282 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7287 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7292 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa5; buf
[3] = 0x68; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7293 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7298 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7303 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7308 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa6; buf
[3] = 0x60; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7309 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7314 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7319 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7324 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa8; buf
[3] = 0xc1; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7325 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7330 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7335 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7340 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa9; buf
[3] = 0xfa; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7341 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7346 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7351 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7356 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xaa; buf
[3] = 0x92; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7357 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7362 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7367 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7372 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xab; buf
[3] = 0x04; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7373 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7378 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7383 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7388 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xac; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7389 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7394 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7399 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7404 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xad; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7405 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7410 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7415 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7420 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xae; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7421 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7426 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7431 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7436 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xaf; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7437 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7442 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7447 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7452 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xb2; buf
[3] = 0xf2; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7453 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7458 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7463 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7468 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xb3; buf
[3] = 0x20; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7469 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7474 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7479 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7484 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xb4; buf
[3] = 0x20; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7485 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7490 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7495 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7500 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xb5; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7501 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7506 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7511 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7516 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xb6; buf
[3] = 0xaf; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7517 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7522 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7527 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7532 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xbb; buf
[3] = 0xae; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7533 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7538 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7543 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7548 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xbc; buf
[3] = 0x44; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7549 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7554 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7559 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7564 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xbd; buf
[3] = 0x44; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7565 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7570 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7575 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7580 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xbe; buf
[3] = 0x3b; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7581 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7586 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7591 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7596 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xbf; buf
[3] = 0x3a; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7597 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7602 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7607 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7612 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xc0; buf
[3] = 0xe2; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7613 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7618 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7623 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7628 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xc1; buf
[3] = 0xc8; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7629 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7634 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7639 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7644 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xc2; buf
[3] = 0x01; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7645 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7650 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7655 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7660 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xc4; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7661 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7666 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7671 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7676 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xc6; buf
[3] = 0x85; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7677 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7682 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7687 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7692 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xc7; buf
[3] = 0x81; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7693 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7698 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7703 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7708 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xc9; buf
[3] = 0xe0; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7709 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7714 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7719 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7724 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xca; buf
[3] = 0xe8; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7725 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7730 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7735 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7740 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xcc; buf
[3] = 0xd8; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7741 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7746 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7751 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7756 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xcd; buf
[3] = 0x93; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7757 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7762 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7767 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7772 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7778 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
7783 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7784 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7789 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7794 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7795 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7800 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7805 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7806 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7811 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7816 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7817 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7822 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7827 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7828 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7833 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7838 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7839 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7844 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7849 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7850 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7855 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7860 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7861 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7866 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7871 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7872 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7877 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7878 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7883 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7888 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7889 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7894 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7899 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7900 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7905 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7910 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7911 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7916 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7921 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7922 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7927 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7932 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7933 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7938 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7943 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7944 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7949 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7954 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7955 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7960 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7965 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7966 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7971 ret
= usb_microdia_control_read(dev
, reg
, buf
, 5);
7977 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
7983 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
7989 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
7995 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8001 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8007 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8013 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8019 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8025 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8031 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8037 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8042 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x03; buf
[3] = 0x14; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8043 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8048 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8053 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8058 buf
[0] = 0xd0; buf
[1] = 0x30; buf
[2] = 0x17; buf
[3] = 0x1b; buf
[4] = 0xbc; buf
[5] = 0x01; buf
[6] = 0x7a; buf
[7] = 0x10;
8059 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8064 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8069 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8074 buf
[0] = 0x90; buf
[1] = 0x30; buf
[2] = 0x1b; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8075 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8080 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8085 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x32; buf
[3] = 0x82; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8086 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8091 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8096 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8101 buf
[0] = 0x05; buf
[1] = 0x00; buf
[2] = 0x01; buf
[3] = 0x00; buf
[4] = 0x50; buf
[5] = 0x78;
8102 ret
= usb_microdia_control_write(dev
, reg
, buf
, 6);
8107 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
8108 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5);
8114 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8120 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8125 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xd5; buf
[3] = 0xa0;
8126 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
8131 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xa0; buf
[3] = 0x78;
8132 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
8138 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8144 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8150 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8156 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8162 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8168 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8174 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8179 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8185 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8190 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8196 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8201 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8207 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8212 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8218 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8223 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8229 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8234 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8240 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8245 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x11; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8246 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8251 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8256 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8261 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2a; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8262 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8267 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8272 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8277 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2b; buf
[3] = 0x06; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8278 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8283 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8288 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8293 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x92; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8294 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8299 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8304 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8309 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x93; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8310 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8315 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8320 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8325 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x1e; buf
[3] = 0x04; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8326 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8331 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8336 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8341 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x1e; buf
[3] = 0x04; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8342 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8347 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8352 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8358 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8363 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x10; buf
[3] = 0x7d; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8364 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8369 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8374 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8379 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x04; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8380 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8385 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8390 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8395 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa1; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8396 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8401 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8406 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8411 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2d; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8412 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8417 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8422 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8427 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2e; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8428 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8433 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8438 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8443 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8444 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8449 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8454 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8459 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x01; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8460 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8465 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8470 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8475 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x02; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8476 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8481 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8486 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8492 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8498 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8504 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8510 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8516 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8522 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8528 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8534 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8539 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x00;
8540 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
8545 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x00;
8546 buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x00;
8547 buf
[8] = 0x00; buf
[9] = 0x00; buf
[10] = 0x00; buf
[11] = 0x00;
8548 buf
[12] = 0x00; buf
[13] = 0x00; buf
[14] = 0x00; buf
[15] = 0x00;
8549 buf
[16] = 0x00; buf
[17] = 0x00; buf
[18] = 0x00; buf
[19] = 0x00;
8550 buf
[20] = 0x00; buf
[21] = 0x00; buf
[22] = 0x00; buf
[23] = 0x00;
8551 buf
[24] = 0x00; buf
[25] = 0x00; buf
[26] = 0x00; buf
[27] = 0x00;
8552 buf
[28] = 0x00; buf
[29] = 0x00; buf
[30] = 0x00; buf
[31] = 0x00;
8553 buf
[32] = 0x00; buf
[33] = 0x00; buf
[34] = 0x00; buf
[35] = 0x00;
8554 buf
[36] = 0x00; buf
[37] = 0x00; buf
[38] = 0x00; buf
[39] = 0x00;
8555 buf
[40] = 0x00; buf
[41] = 0x00; buf
[42] = 0x00; buf
[43] = 0x00;
8556 buf
[44] = 0x00; buf
[45] = 0x00; buf
[46] = 0x00; buf
[47] = 0x00;
8557 ret
= usb_microdia_control_write(dev
, reg
, buf
, 48);
8562 buf
[0] = 0x2d; buf
[1] = 0x2d; buf
[2] = 0x3a; buf
[3] = 0x05;
8563 buf
[4] = 0x04; buf
[5] = 0x3f;
8564 ret
= usb_microdia_control_write(dev
, reg
, buf
, 6);
8569 buf
[0] = 0x28; buf
[1] = 0xd8; buf
[2] = 0x14; buf
[3] = 0xec;
8570 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
8575 buf
[0] = 0x32; buf
[1] = 0xdd; buf
[2] = 0x32; buf
[3] = 0xdd;
8576 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
8582 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8588 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8594 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8599 buf
[0] = 0x0d; buf
[1] = 0x08; buf
[2] = 0x08; buf
[3] = 0x0d;
8600 buf
[4] = 0x08; buf
[5] = 0x08; buf
[6] = 0x0d; buf
[7] = 0x0d;
8601 buf
[8] = 0x0d; buf
[9] = 0x0d; buf
[10] = 0x11; buf
[11] = 0x0d;
8602 buf
[12] = 0x0d; buf
[13] = 0x11; buf
[14] = 0x15; buf
[15] = 0x21;
8603 buf
[16] = 0x15; buf
[17] = 0x15; buf
[18] = 0x11; buf
[19] = 0x11;
8604 buf
[20] = 0x15; buf
[21] = 0x2a; buf
[22] = 0x1d; buf
[23] = 0x1d;
8605 buf
[24] = 0x19; buf
[25] = 0x21; buf
[26] = 0x32; buf
[27] = 0x2a;
8606 buf
[28] = 0x32; buf
[29] = 0x32; buf
[30] = 0x2e; buf
[31] = 0x2a;
8607 buf
[32] = 0x2e; buf
[33] = 0x2e; buf
[34] = 0x36; buf
[35] = 0x3a;
8608 buf
[36] = 0x4b; buf
[37] = 0x43; buf
[38] = 0x36; buf
[39] = 0x3a;
8609 buf
[40] = 0x47; buf
[41] = 0x3a; buf
[42] = 0x2e; buf
[43] = 0x2e;
8610 buf
[44] = 0x43; buf
[45] = 0x5c; buf
[46] = 0x43; buf
[47] = 0x47;
8611 buf
[48] = 0x4f; buf
[49] = 0x53; buf
[50] = 0x58; buf
[51] = 0x58;
8612 buf
[52] = 0x58; buf
[53] = 0x32; buf
[54] = 0x3f; buf
[55] = 0x60;
8613 buf
[56] = 0x64; buf
[57] = 0x5c; buf
[58] = 0x53; buf
[59] = 0x64;
8614 buf
[60] = 0x4b; buf
[61] = 0x53; buf
[62] = 0x58; buf
[63] = 0x53;
8615 ret
= usb_microdia_control_write(dev
, reg
, buf
, 64);
8620 buf
[0] = 0x0d; buf
[1] = 0x11; buf
[2] = 0x11; buf
[3] = 0x15;
8621 buf
[4] = 0x11; buf
[5] = 0x15; buf
[6] = 0x26; buf
[7] = 0x15;
8622 buf
[8] = 0x15; buf
[9] = 0x26; buf
[10] = 0x53; buf
[11] = 0x36;
8623 buf
[12] = 0x2e; buf
[13] = 0x36; buf
[14] = 0x53; buf
[15] = 0x53;
8624 buf
[16] = 0x53; buf
[17] = 0x53; buf
[18] = 0x53; buf
[19] = 0x53;
8625 buf
[20] = 0x53; buf
[21] = 0x53; buf
[22] = 0x53; buf
[23] = 0x53;
8626 buf
[24] = 0x53; buf
[25] = 0x53; buf
[26] = 0x53; buf
[27] = 0x53;
8627 buf
[28] = 0x53; buf
[29] = 0x53; buf
[30] = 0x53; buf
[31] = 0x53;
8628 buf
[32] = 0x53; buf
[33] = 0x53; buf
[34] = 0x53; buf
[35] = 0x53;
8629 buf
[36] = 0x53; buf
[37] = 0x53; buf
[38] = 0x53; buf
[39] = 0x53;
8630 buf
[40] = 0x53; buf
[41] = 0x53; buf
[42] = 0x53; buf
[43] = 0x53;
8631 buf
[44] = 0x53; buf
[45] = 0x53; buf
[46] = 0x53; buf
[47] = 0x53;
8632 buf
[48] = 0x53; buf
[49] = 0x53; buf
[50] = 0x53; buf
[51] = 0x53;
8633 buf
[52] = 0x53; buf
[53] = 0x53; buf
[54] = 0x53; buf
[55] = 0x53;
8634 buf
[56] = 0x53; buf
[57] = 0x53; buf
[58] = 0x53; buf
[59] = 0x53;
8635 buf
[60] = 0x53; buf
[61] = 0x53; buf
[62] = 0x53; buf
[63] = 0x53;
8636 ret
= usb_microdia_control_write(dev
, reg
, buf
, 64);
8642 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8648 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8654 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8660 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8666 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8672 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8678 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8684 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8689 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x03; buf
[3] = 0x14; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8690 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8695 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8700 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8705 buf
[0] = 0xd0; buf
[1] = 0x30; buf
[2] = 0x17; buf
[3] = 0x1b; buf
[4] = 0xbc; buf
[5] = 0x01; buf
[6] = 0x7a; buf
[7] = 0x10;
8706 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8711 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8716 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8721 buf
[0] = 0x90; buf
[1] = 0x30; buf
[2] = 0x1b; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8722 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8727 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8732 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x32; buf
[3] = 0x82; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8733 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8738 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8743 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8748 buf
[0] = 0x05; buf
[1] = 0x00; buf
[2] = 0x01; buf
[3] = 0x00;
8749 buf
[4] = 0x50; buf
[5] = 0x78;
8750 ret
= usb_microdia_control_write(dev
, reg
, buf
, 6);
8755 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0;
8757 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5);
8763 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8768 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xd5; buf
[3] = 0xa0;
8769 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
8774 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xa0; buf
[3] = 0x78;
8775 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
8781 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8787 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8793 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8799 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8805 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8811 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8817 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8823 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8829 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8835 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8841 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8847 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8852 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8858 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8863 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8869 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8874 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8880 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8885 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8891 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8896 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8902 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8907 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8913 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8918 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x11; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8919 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8924 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8929 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8934 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2a; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8935 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8940 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8945 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8950 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2b; buf
[3] = 0x70; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8951 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8956 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8961 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8966 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x92; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8967 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8972 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8977 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8982 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x93; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8983 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8988 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8993 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8998 buf
[0] = 0x90; buf
[1] = 0x30; buf
[2] = 0x0a; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8999 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9004 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9009 buf
[0] = 0x92; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9010 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9015 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9020 ret
= usb_microdia_control_read(dev
, reg
, buf
, 5);
9025 buf
[0] = 0x90; buf
[1] = 0x30; buf
[2] = 0x0b; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9026 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9031 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9036 buf
[0] = 0x92; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9037 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9042 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9047 ret
= usb_microdia_control_read(dev
, reg
, buf
, 5);
9052 buf
[0] = 0x90; buf
[1] = 0x30; buf
[2] = 0x1c; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9053 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9058 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9063 buf
[0] = 0x92; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9064 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9069 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9074 ret
= usb_microdia_control_read(dev
, reg
, buf
, 5);
9079 buf
[0] = 0x90; buf
[1] = 0x30; buf
[2] = 0x1d; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9080 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9085 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9090 buf
[0] = 0x92; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9091 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9096 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9101 ret
= usb_microdia_control_read(dev
, reg
, buf
, 5);
9107 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9113 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9119 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9124 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa1; buf
[3] = 0x01; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9125 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9130 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9135 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9140 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x10; buf
[3] = 0x06; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9141 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9146 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9151 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9156 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x04; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9157 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9162 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9167 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9172 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2d; buf
[3] = 0x36; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9173 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9178 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9183 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9188 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2e; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9189 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9194 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9199 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9204 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x01; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x15;
9205 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9210 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9215 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9220 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x06; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x15;
9221 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9226 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9231 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9236 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x01; buf
[3] = 0x94; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9237 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9242 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9247 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9252 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x02; buf
[3] = 0x8d; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9253 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9258 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9263 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9268 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x09; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x15;
9269 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9274 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9279 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9284 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x01; buf
[3] = 0x95; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9285 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9290 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9295 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9300 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x02; buf
[3] = 0x85; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9301 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9306 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9311 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9316 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x0c; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x15;
9317 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9322 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9327 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9332 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x01; buf
[3] = 0x96; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9333 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9338 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9343 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9348 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x02; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9349 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9354 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9359 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9364 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x02; buf
[3] = 0x7c; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9365 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9370 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9375 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9381 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9387 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9394 /* END OF MICRODIA 6288 START STREAM */
9398 UDIA_ERROR("r/w in Register %x failed (%d)!\n", reg
, ret
);
9402 int dev_microdia_stop_stream(struct usb_microdia
*dev
)
9405 if (dev
&& dev
->stop_stream
)
9406 ret
= dev
->stop_stream(dev
);
9412 * @brief From stop.htm
9420 * For SN9C201 with MI1310.
9421 * This function has not been tested yet.
9423 int microdia_6242_stop_stream(struct usb_microdia
*dev
)
9427 __u8 only10c0
[3] = {0x0d, 0x00, 0x00};
9430 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
9433 usb_microdia_control_write(dev
, 0x1007, buf
, 1);
9436 usb_microdia_control_write(dev
, 0x1006, buf
, 1);
9438 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
9439 only10c0
[0], dev
->sensor_flags
, &only10c0
[1]);
9442 usb_microdia_control_write(dev
, 0x1000, buf
, 1);
9445 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
9448 usb_microdia_control_write(dev
, 0x1007, buf
, 1);
9451 usb_microdia_control_write(dev
, 0x1006, buf
, 1);
9454 buf
[0] = 0x98; buf
[1] = 0xe7; buf
[2] = 0x11;
9455 usb_microdia_control_write(dev
, 0x1000, buf
, 3);
9458 * After the select alternate setting 0 is actually another transfer:
9460 * usb_microdia_control_write(dev, 0x1066, buf, 1);
9468 * @brief From stopstream.log
9476 * For SN9C201 with SOI968.
9477 * I don't whether the function really stops the stream.
9478 * Nevertheless the LED on the webcam now stops glowing.
9479 * The function is very similar to "microdia_624f_stop_stream".
9481 int microdia_624e_stop_stream(struct usb_microdia
*dev
)
9486 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
9488 /* Next two writes added because it works better.
9489 * The LED stops glowing and I think the stream does too.
9490 * 0x20 = 0b00100000 which is the minimal of what the
9491 * other stopstreams have in common.
9494 usb_microdia_control_write(dev
, 0x1007, buf
, 1);
9497 usb_microdia_control_write(dev
, 0x1006, buf
, 1);
9500 usb_microdia_control_write(dev
, 0x1000, buf
, 1);
9503 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
9505 buf
[0] = 0x38; buf
[1] = 0xe7; buf
[2] = 0x11;
9506 usb_microdia_control_write(dev
, 0x1000, buf
, 3);
9508 usb_microdia_control_read(dev
, 0x1066, buf
, 1);
9514 int microdia_624f_stop_stream(struct usb_microdia
*dev
)
9522 ret
= usb_microdia_control_write(dev
, command
, buf
, 1);
9528 ret
= usb_microdia_control_write(dev
, command
, buf
, 1);
9534 ret
= usb_microdia_control_write(dev
, command
, buf
, 1);
9540 ret
= usb_microdia_control_write(dev
, command
, buf
, 1);
9546 ret
= usb_microdia_control_write(dev
, command
, buf
, 1);
9552 ret
= usb_microdia_control_write(dev
, command
, buf
, 1);
9560 ret
= usb_microdia_control_write(dev
, command
, buf
, 3);
9565 ret
= usb_microdia_control_read(dev
, command
, buf
, 1);
9570 ret
= usb_microdia_control_write(dev
, command
, buf
, 1);
9577 UDIA_ERROR("command %x failed (%d)!\n", command
, ret
);
9581 int microdia_6260_stop_stream(struct usb_microdia
*dev
)
9587 ret
= usb_microdia_control_write(dev
, 0x1061, buf
, 1);
9589 ret
= usb_microdia_control_write(dev
, 0x1000, buf
, 1);
9591 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
9593 ret
= usb_microdia_control_write(dev
, 0x1007, buf
, 1);
9595 ret
= usb_microdia_control_write(dev
, 0x1006, buf
, 1);
9597 buf
[0] = 0x98; buf
[1] = 0xe7; buf
[2] = 0x11;
9598 ret
= usb_microdia_control_write(dev
, 0x1000, buf
, 3);
9601 ret
= usb_microdia_control_write(dev
, 0x1066, buf
, 1);
9602 ret
= usb_microdia_control_read(dev
, 0x1045, buf
, 1);
9604 ret
= usb_microdia_control_write(dev
, 0x1045, buf
, 1);
9606 ret
= usb_microdia_control_write(dev
, 0x10c8, buf
, 1);
9608 ret
= usb_microdia_control_write(dev
, 0x1020, buf
, 1);
9614 * @brief From 7 start-stop-logs (made by Alex Carlos, Boris Borisov, bohzan and Comer352l)
9618 * @returns 0 (ok) or -1 (error)
9622 * Windows driver version: 5.7.23.000
9623 * Windows versions: 2000 and XP
9624 * USB-Logger: SniffUSB 1.8 and 2.0, USBTrace 2.0, SnoopyPro
9625 * All logs were made using AMCAP with 640x480, RGB24
9627 int microdia_6270_stop_stream(struct usb_microdia
*dev
)
9633 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
9635 ret
+= usb_microdia_control_write(dev
, 0x1007, buf
, 1); /* URB 3541 */
9637 ret
+= usb_microdia_control_write(dev
, 0x1006, buf
, 1); /* URB 3542 */
9638 /* => These two writes seem to cause the cam to stop sending isochronus USB messages */
9641 ret
+= usb_microdia_control_write(dev
, 0x1061, buf
, 1); /* URB 3544 */
9642 if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
9644 ret
+= usb_microdia_control_write(dev
, 0x1007, buf
, 1); /* URB 3541 */
9646 ret
+= usb_microdia_control_write(dev
, 0x1006, buf
, 1); /* URB 3542 */
9648 if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
9649 /* Write to sensor register 0x07: Output Control */
9650 buf
[0] = 0x00; buf
[1] = 0x00; /* stop sensor readout, normal operation */
9651 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x07, dev
->sensor_flags
, buf
);
9653 buf
[0] = 0x38; /* ALEX: 0x3c */
9654 ret
+= usb_microdia_control_write(dev
, 0x1000, buf
, 1); /* URB 3545 */
9655 buf
[0] = 0x6d; /* ALEX: 0xec; FRANK: also 0x6c */
9656 ret
+= usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 3546 */
9657 buf
[0] = 0x38; buf
[1] = 0xe7; buf
[2] = 0x11;
9658 ret
+= usb_microdia_control_write(dev
, 0x1000, buf
, 3); /* URB 3547 */
9660 /* INTERRUPT COMMING BACK (URB 2227) */
9661 /* SELECT ALTERNATE SETTINGS (URB 3548) */
9662 /* INTERRUPT GOING DOWN (URB 3549) */
9665 ret
+= usb_microdia_control_write(dev
, 0x1066, buf
, 1); /* URB 3550 */
9668 UDIA_INFO("One ore more errors occured while stopping stream !\n");
9675 int microdia_627b_stop_stream(struct usb_microdia
*dev
)
9683 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9689 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9696 //ret = usb_microdia_control_write(dev, reg, buf, 1);
9697 //if(ret < 0) goto err;
9701 //ret = usb_microdia_control_write(dev, reg, buf, 1);
9702 //if(ret < 0) goto err;
9707 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9714 //ret = usb_microdia_control_write(dev, reg, buf, 1);
9715 //if(ret < 0) goto err;
9719 //ret = usb_microdia_control_write(dev, reg, buf, 1);
9720 //if(ret < 0) goto err;
9725 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9731 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9736 buf
[0] = 0x38; buf
[1] = 0xe7; buf
[2] = 0x11;
9737 ret
= usb_microdia_control_write(dev
, reg
, buf
, 3);
9743 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9749 UDIA_ERROR("r/w in Register %x failed (%d)!\n", reg
, ret
);
9754 * @brief From UsbSnoop-plugin-parsed.log
9758 * @returns 0 (OK) or <0 (Error)
9760 * @author Vincent, Kuzja
9762 int microdia_6288_stop_stream(struct usb_microdia
*dev
)
9770 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9776 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9782 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9788 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9794 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9799 buf
[0] = 0x98; buf
[1] = 0xe7; buf
[2] = 0x11;
9800 ret
= usb_microdia_control_write(dev
, reg
, buf
, 3);
9806 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9812 UDIA_ERROR("r/w in Register %x failed (%d)!\n", reg
, ret
);
9816 int microdia_624f_flip_detect(struct usb_microdia
*dev
)
9821 ret
= usb_microdia_control_read(dev
, 0x1009, &val
, 1);
9825 dev
->vsettings
.vflip
= 1;
9827 dev
->vsettings
.vflip
= 0;
9831 int microdia_6260_flip_detect(struct usb_microdia
*dev
)
9833 const __u8 flip_bit
= 0x01;
9836 static __u8 flip_reg
= flip_bit
;
9839 ret
= usb_microdia_control_read(dev
, 0x1009, &val
, 1);
9842 if (flip_reg
!= (val
& flip_bit
)) {
9847 ret
= ov7670_auto_flip(dev
, vflip
);
9848 flip_reg
= (val
& flip_bit
);