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 };
3986 __u8 reg_11c0
[48] = {
3987 0x10, 0x21, 0x34, 0x40, 0x47, 0x4f, 0x57, 0x5f,
3988 0x64, 0x68, 0x6d, 0x73, 0x79, 0x80, 0x89, 0x97,
3989 0x0d, 0x1c, 0x2a, 0x33, 0x38, 0x3d, 0x44, 0x4a,
3990 0x4e, 0x52, 0x56, 0x5b, 0x61, 0x68, 0x6f, 0x7a,
3991 0x0d, 0x1a, 0x2a, 0x31, 0x36, 0x3b, 0x41, 0x47,
3992 0x4a, 0x4e, 0x53, 0x58, 0x5d, 0x64, 0x6b, 0x76
3995 __u8 qtable1
[64] = {
3996 0x0d, 0x08, 0x08, 0x0d, 0x08, 0x08, 0x0d, 0x0d,
3997 0x0d, 0x0d, 0x11, 0x0d, 0x0d, 0x11, 0x15, 0x21,
3998 0x15, 0x15, 0x11, 0x11, 0x15, 0x2a, 0x1d, 0x1d,
3999 0x19, 0x21, 0x32, 0x2a, 0x32, 0x32, 0x2e, 0x2a,
4000 0x2e, 0x2e, 0x36, 0x3a, 0x4b, 0x43, 0x36, 0x3a,
4001 0x47, 0x3a, 0x2e, 0x2e, 0x43, 0x5c, 0x43, 0x47,
4002 0x4f, 0x54, 0x58, 0x58, 0x58, 0x32, 0x3f, 0x60,
4003 0x64, 0x5c, 0x54, 0x64, 0x4b, 0x54, 0x58, 0x54
4006 __u8 qtable2
[64] = {
4007 0x0d, 0x11, 0x11, 0x15, 0x11, 0x15, 0x26, 0x15,
4008 0x15, 0x26, 0x54, 0x36, 0x2e, 0x36, 0x54, 0x54,
4009 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
4010 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
4011 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
4012 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
4013 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54,
4014 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54
4017 for (i
= 0; i
< ARRAY_SIZE(regs
); i
++) {
4020 ret
= usb_microdia_control_write(dev
, reg
, &value
, 1);
4022 UDIA_INFO("Bridge Init Error (%d). line %d", ret
, i
);
4027 ret
= usb_microdia_control_write(dev
, 0x11c0, reg_11c0
, 48);
4031 ret
= usb_microdia_control_write(dev
, 0x1100, qtable1
, 64);
4035 ret
= usb_microdia_control_write(dev
, 0x1140, qtable2
, 64);
4039 /* this is the same register as the I2C write, not sure why
4040 * we're writing 9 bytes -- the SN9C102 docs say all writes
4041 * must be 8 bytes, but we don't have docs for SN9C20x */
4042 ret
= usb_microdia_control_write(dev
, 0x10c0, unknown1
, 9);
4046 if (dev
->sensor_init
)
4047 dev
->sensor_init(dev
);
4052 UDIA_ERROR("start stream: failed (%d)!\n", ret
);
4056 int microdia_6260_start_stream(struct usb_microdia
*dev
)
4061 ret
= usb_microdia_control_read(dev
, 0x1045, buf
, 1);
4063 ret
= usb_microdia_control_write(dev
, 0x1045, buf
, 1);
4065 ret
= usb_microdia_control_write(dev
, 0x1066, buf
, 1);
4067 ret
= usb_microdia_control_write(dev
, 0x1007, buf
, 1);
4069 ret
= usb_microdia_control_write(dev
, 0x1006, buf
, 1);
4071 ret
= usb_microdia_control_write(dev
, 0x1000, buf
, 1);
4073 ret
= usb_microdia_control_write(dev
, 0x1001, buf
, 1);
4075 ret
= usb_microdia_control_write(dev
, 0x1002, buf
, 1);
4077 ret
= usb_microdia_control_write(dev
, 0x1061, buf
, 1);
4079 ret
= usb_microdia_control_write(dev
, 0x1020, buf
, 1);
4081 buf
[0] = 0x40; buf
[1] = 0x30; buf
[2] = 0x20; buf
[3] = 0x10;
4083 ret
= usb_microdia_control_write(dev
, 0x1067, buf
, 5);
4085 buf
[0] = 0x80; buf
[1] = 0x21; buf
[2] = 0x00; buf
[3] = 0x00;
4086 buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x00;
4088 ret
= usb_microdia_control_write(dev
, 0x10c0, buf
, 9);
4090 buf
[0] = 0x45; buf
[1] = 0x18; buf
[2] = 0x00; buf
[3] = 0x30;
4091 buf
[4] = 0x00; buf
[5] = 0x09; buf
[6] = 0x00; buf
[7] = 0xed;
4092 buf
[8] = 0x0f; buf
[9] = 0xda; buf
[10] = 0x0f; buf
[11] = 0x3a;
4093 buf
[12] = 0x00; buf
[13] = 0x3a; buf
[14] = 0x00; buf
[15] = 0xd0;
4094 buf
[16] = 0x0f; buf
[17] = 0xf7; buf
[18] = 0x0f; buf
[19] = 0x00;
4095 buf
[20] = 0x00; buf
[21] = 0x00; buf
[22] = 0x60; buf
[23] = 0x0a;
4096 ret
= usb_microdia_control_write(dev
, 0x10e0, buf
, 24);
4098 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00;
4099 ret
= usb_microdia_control_write(dev
, 0x10f8, buf
, 3);
4101 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0;
4103 ret
= usb_microdia_control_write(dev
, 0x10fb, buf
, 5);
4105 buf
[0] = 0x8a; buf
[1] = 0x8c; buf
[2] = 0x08;
4106 ret
= usb_microdia_control_write(dev
, 0x1188, buf
, 3);
4108 buf
[0] = 0x00; buf
[1] = 0x20; buf
[2] = 0x20; buf
[3] = 0x20;
4109 buf
[4] = 0x20; buf
[5] = 0x00; buf
[6] = 0x24; buf
[7] = 0x3b;
4110 buf
[8] = 0x4f; buf
[9] = 0x61; buf
[10] = 0x71; buf
[11] = 0x80;
4111 buf
[12] = 0x8f; buf
[13] = 0x9d; buf
[14] = 0xab; buf
[15] = 0xb8;
4112 buf
[16] = 0xc4; buf
[17] = 0xd1; buf
[18] = 0xdd; buf
[19] = 0xe9;
4113 buf
[20] = 0xf4; buf
[21] = 0xff;
4114 ret
= usb_microdia_control_write(dev
, 0x118b, buf
, 22);
4116 buf
[0] = 0x00; buf
[1] = 0x00;
4117 ret
= usb_microdia_control_write(dev
, 0x11a1, buf
, 2);
4119 buf
[0] = 0x60; buf
[1] = 0x28; buf
[2] = 0x00; buf
[3] = 0x00;
4120 buf
[4] = 0x00; buf
[5] = 0x40; buf
[6] = 0x01; buf
[7] = 0xf0;
4122 ret
= usb_microdia_control_write(dev
, 0x11b7, buf
, 9);
4125 ret
= usb_microdia_control_write(dev
, 0x1000, buf
, 1);
4128 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4130 ret
= ov7670_initialise(dev
);
4134 ret
= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 1, 0x3b, dev
->sensor_flags
, buf
);
4135 ret
= usb_microdia_control_read(dev
, 0x10c1, buf
, 1);
4137 ret
= usb_microdia_control_write(dev
, 0x10c1, buf
, 1);
4139 /* TRY TO READ FROM EEPROM: */
4140 ret
= sn9c20x_read_i2c_data(dev
, 0x50, 1, 0x00, dev
->sensor_flags
, buf
);
4142 UDIA_INFO("No EEPROM found\n");
4144 UDIA_INFO("Read from EEPROM successful\n");
4147 ret
= usb_microdia_control_write(dev
, 0x10c1, buf
, 1);
4149 ret
= usb_microdia_control_write(dev
, 0x10e0, buf
, 1);
4151 ret
= usb_microdia_control_write(dev
, 0x1001, buf
, 1);
4153 ret
= usb_microdia_control_write(dev
, 0x1001, buf
, 1);
4155 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x01; buf
[3] = 0x00;
4156 buf
[4] = 0x50; buf
[5] = 0x3c;
4157 ret
= usb_microdia_control_write(dev
, 0x1180, buf
, 6);
4159 buf
[0] = 0x00; buf
[1] = 0x40; buf
[2] = 0x00; buf
[3] = 0xf0;
4161 ret
= usb_microdia_control_write(dev
, 0x10fb, buf
, 5);
4164 ret
= usb_microdia_control_write(dev
, 0x1189, buf
, 1);
4166 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xd5; buf
[3] = 0x50;
4167 ret
= usb_microdia_control_write(dev
, 0x11a1, buf
, 4);
4169 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xa0; buf
[3] = 0x3c;
4170 ret
= usb_microdia_control_write(dev
, 0x11ab, buf
, 4);
4172 ret
= usb_microdia_control_write(dev
, 0x1000, buf
, 1);
4174 ret
= usb_microdia_control_write(dev
, 0x1002, buf
, 1);
4176 ret
= usb_microdia_control_write(dev
, 0x1002, buf
, 1);
4178 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4180 ret
= usb_microdia_control_write(dev
, 0x118a, buf
, 1);
4182 ret
= usb_microdia_control_write(dev
, 0x0395, 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);
4197 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4199 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4200 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4202 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4204 /* OV7670 Intialise Part 2 */
4205 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x01; buf
[3] = 0x00;
4206 buf
[4] = 0x50; buf
[5] = 0x3c;
4207 ret
= usb_microdia_control_write(dev
, 0x1180, buf
, 6);
4209 buf
[0] = 0x00; buf
[1] = 0x40; buf
[2] = 0x00; buf
[3] = 0xf0;
4211 ret
= usb_microdia_control_write(dev
, 0x10fb, buf
, 5);
4214 ret
= usb_microdia_control_write(dev
, 0x1189, buf
, 1);
4216 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xd5; buf
[3] = 0x50;
4217 ret
= usb_microdia_control_write(dev
, 0x11a1, buf
, 4);
4219 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xa0; buf
[3] = 0x3c;
4220 ret
= usb_microdia_control_write(dev
, 0x11ab, buf
, 4);
4223 ret
= usb_microdia_control_write(dev
, 0x1061, buf
, 1);
4225 ret
= usb_microdia_control_write(dev
, 0x1061, buf
, 1);
4227 ret
= usb_microdia_control_write(dev
, 0x1000, buf
, 1);
4229 ret
= usb_microdia_control_write(dev
, 0x1002, buf
, 1);
4231 ret
= usb_microdia_control_write(dev
, 0x1002, buf
, 1);
4233 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4235 ret
= usb_microdia_control_write(dev
, 0x118a, buf
, 1);
4237 ret
= usb_microdia_control_write(dev
, 0x0395, 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);
4252 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4254 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4255 ret
= usb_microdia_control_read(dev
, 0x11b8, buf
, 1);
4257 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
4259 /* OV7670 Initialisation Part 3 Goes Here */
4261 ret
= usb_microdia_control_write(dev
, 0x1061, buf
, 1);
4267 * @brief From 7 start-stop-logs (made by Alex Carlos, Boris Borisov, bohzan and Comer352l)
4271 * @returns 0 (ok) or -1 (error)
4275 * Windows driver versions: 5.7.23.000
4276 * Windows versions: 2000 and XP
4277 * USB-Logger: SniffUSB 1.8 and 2.0, USBTrace 2.0, SnoopyPro
4278 * All logs were made using AMCAP with 640x480, RGB24
4280 int microdia_6270_start_stream(struct usb_microdia
*dev
)
4287 /* Check if sensor slave address is valid: */
4288 if ((dev
->sensor_slave_address
!= MT9V111_I2C_SLAVE_ADDRESS
) && (dev
->sensor_slave_address
!= MT9V011_I2C_SLAVE_ADDRESS
)) {
4289 UDIA_INFO("microdia_6270_start_stream(): Invalid sensor slave address !\n");
4293 /* <= INTERRUPT COMING BACK (URB 1953) */
4294 /* SWITCH TO ALTERNATE SETTINGS 8 (URB 1954) // NOT IN ALEX'S LOG */
4295 /* => INTERRUPT GOING DOWN (URB 1955) */
4298 usb_microdia_control_write(dev
, 0x1066, buf
, 1); /* URB 1956 */
4300 /* <= INTERRUPT COMING BACK (URB 1955) */
4301 /* => INTERRUPT GOING DOWN (URB 1957) */
4304 usb_microdia_control_write(dev
, 0x1000, buf
, 1); /* URB 1958 */
4306 usb_microdia_control_write(dev
, 0x1001, buf
, 1); /* URB 1959 */
4308 usb_microdia_control_write(dev
, 0x1002, buf
, 1); /* URB 1960 */
4310 usb_microdia_control_write(dev
, 0x1061, buf
, 1); /* URB 1961 */
4312 usb_microdia_control_write(dev
, 0x1020, buf
, 1); /* URB 1962 */
4313 buf
[0] = 0x40; buf
[1] = 0x30; buf
[2] = 0x20; buf
[3] = 0x10; buf
[4] = 0x08;
4314 usb_microdia_control_write(dev
, 0x1067, buf
, 5); /* URB 1963 */
4316 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4317 /* STRANGE I2C MESSAGE: */
4319 /* - byte 8 = 0x00 at first start + first cycle */
4320 /* - procedure not complete: no wait/check for ack/error, no readout of 0x10c2 */
4321 /* - dummy writes at first cycle and read at second cycle, but there are many I2C messages in the meantime, so this should not work */
4323 /* AT FIRST START + FIRST CYCLE: */
4324 buf
[0] = 0x80; buf
[1] = dev
->sensor_slave_address
; buf
[2] = 0x00; buf
[3] = 0x00;
4325 buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x00; buf
[8] = 0x03;
4326 /* AT ALL FURTHER STARTS + FIRST CYCLE: */
4327 /* MT9V111: I2C MESSAGE => IFP Register 0x33: Auto exposure */
4328 /* buf[0] = 0x90; buf[1] = dev->sensor_slave_address; buf[2] = 0x33; buf[3] = 0x00; */
4329 /* buf[4] = 0x00; buf[5] = 0x00; buf[6] = 0x00; buf[7] = 0x10; buf[8] = 0x03; */
4330 /* MT9V011: ????????????????????????? */
4331 /* buf[0] = 0x90; buf[1] = dev->sensor_slave_address; buf[2] = 0x07; buf[3] = 0x00; */
4332 /* buf[4] = 0x00; buf[5] = 0x00; buf[6] = 0x00; buf[7] = 0x10; buf[8] = 0x03; */
4333 /* ALWAYS AT 2nd AND FURTHER CYCLES: */
4335 /* buf[0] = 0xa2; buf[1] = 0x5c; buf[2] = 0x00; buf[3] = 0x36; */
4336 /* buf[4] = 0x00; buf[5] = 0x82; buf[6] = 0x3a; buf[7] = 0x10; buf[8] = 0x03; */
4337 /* => buf[3] to buf[6] simply contain bytes read with URB 2215 */
4339 /* buf[0] = 0xb0; buf[1] = 0x5d; buf[2] = 0x07; buf[3] = 0x00; */
4340 /* buf[4] = 0x00; buf[5] = 0x00; buf[6] = 0x00; buf[7] = 0x10; buf[8] = 0x03; */
4341 usb_microdia_control_write(dev
, 0x10c0, buf
, 9); /* URB 1964 */
4342 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4344 buf
[0] = 0x45; buf
[1] = 0x18; buf
[2] = 0x00; buf
[3] = 0x30;
4345 buf
[4] = 0x00; buf
[5] = 0x09; buf
[6] = 0x00; buf
[7] = 0xed;
4346 buf
[8] = 0x0f; buf
[9] = 0xda; buf
[10] = 0x0f; buf
[11] = 0x3a;
4347 buf
[12] = 0x00; buf
[13] = 0x3a; buf
[14] = 0x00; buf
[15] = 0xd0;
4348 buf
[16] = 0x0f; buf
[17] = 0xf7; buf
[18] = 0x0f; buf
[19] = 0x00;
4349 buf
[20] = 0x00; buf
[21] = 0x00; buf
[22] = 0x60; buf
[23] = 0x0a;
4350 usb_microdia_control_write(dev
, 0x10e0, buf
, 24); /* URB 1965 */
4351 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00;
4352 usb_microdia_control_write(dev
, 0x10f8, buf
, 3); /* URB 1966 */
4353 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
4354 usb_microdia_control_write(dev
, 0x10fb, buf
, 5); /* URB 1967 */
4355 buf
[0] = 0x06; buf
[1] = 0x0c; buf
[2] = 0x08;
4356 usb_microdia_control_write(dev
, 0x1188, buf
, 3); /* URB 1968 */
4357 buf
[0] = 0x00; buf
[1] = 0x20; buf
[2] = 0x20; buf
[3] = 0x20;
4358 buf
[4] = 0x20; buf
[5] = 0x00; buf
[6] = 0x24; buf
[7] = 0x3b;
4359 buf
[8] = 0x4f; buf
[9] = 0x61; buf
[10] = 0x71; buf
[11] = 0x80;
4360 buf
[12] = 0x8f; buf
[13] = 0x9d; buf
[14] = 0xab; buf
[15] = 0xb8;
4361 buf
[16] = 0xc4; buf
[17] = 0xd1; buf
[18] = 0xdd; buf
[19] = 0xe9;
4362 buf
[20] = 0xf4; buf
[21] = 0xff;
4363 usb_microdia_control_write(dev
, 0x118b, buf
, 22); /* URB 1969 */
4364 buf
[0] = 0x00; buf
[1] = 0x00;
4365 usb_microdia_control_write(dev
, 0x11a1, buf
, 2); /* URB 1970 */
4366 buf
[0] = 0x60; buf
[1] = 0x28; buf
[2] = 0x00; buf
[3] = 0x08;
4367 buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x00;
4369 usb_microdia_control_write(dev
, 0x11b7, buf
, 9); /* URB 1971 */
4371 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 1972 */
4373 usb_microdia_control_write(dev
, 0x1000, buf
, 1); /* URB 1973 */
4375 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4378 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4379 /* Write to IFP register 0x0d: Color Correction Register 8 */
4380 buf
[0] = 0x00; buf
[1] = 0x01;
4381 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0d, dev
->sensor_flags
, buf
); /* URBs 1974-1976 */
4382 /* Write to IFP register 0x0d: Color Correction Register 8 */
4383 buf
[0] = 0x00; buf
[1] = 0x00; /* ??? */
4384 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0d, dev
->sensor_flags
, buf
); /* URBs 1977-1979 */
4385 /* Writes to IFP registers 0x01: Register Address Space Selection */
4386 /* 0x02: Color Correction Register 1 */
4387 buf
[0] = 0x00; buf
[1] = 0x01; /* select IFP address space */
4388 buf
[2] = 0x00; buf
[3] = 0x16; /* ??? // AT FIRST START + FIRST CYCLE: 0x00 0x00 */
4389 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x01, dev
->sensor_flags
, buf
); /* URBs 1980-1982 */
4390 /* Writes to IFP registers 0x03: Color Correction Register 3 */
4391 /* 0x04: Color Correction Register 4 */
4392 buf
[0] = 0x01; buf
[1] = 0xe1; /* ??? // AT FIRST START + FIRST CYCLE: 0x00 0x00 */
4393 buf
[2] = 0x02; buf
[3] = 0x81; /* ??? // AT FIRST START + FIRST CYCLE: 0x00 0x00 */
4394 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x03, dev
->sensor_flags
, buf
); /* URBs 1983-1985 */
4395 /* Writes to IFP registers 0x05: Aperture Correction (Sharpening) */
4396 /* 0x06: Operating Mode Control */
4397 buf
[0] = 0x00; buf
[1] = 0x04; /* 100% sharpening, no automatic sharpness reduction at low light // AT FIRST START + FIRST CYCLE: 0x00 0x00: no sharpening */
4398 buf
[2] = 0x00; buf
[3] = 0x00; /* stop AWB at the current values, no on-the-fly defect correction, no auto exposure, + RESREVED option */
4399 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x05, dev
->sensor_flags
, buf
); /* URBs 1986-1988 */
4400 /* Writes to IFP registers 0x07: Image Flow Processor Soft Reset */
4401 /* 0x08: Output Format Control */
4402 buf
[0] = 0x30; buf
[1] = 0x02; /* reset // AT FIRST START + FIRST CYCLE: 0x00 0x00 */
4403 buf
[2] = 0x04; buf
[3] = 0x80; /* bypass entire image processing, raw 8+2 Bayer data output directly */
4404 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x07, dev
->sensor_flags
, buf
); /* URBs 1989-1991 */
4405 /* "Dummy" write to IFP Register 0x11: Color Correction Register 12 */
4406 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x11, dev
->sensor_flags
, NULL
); /* URBs 1992-1993 */
4407 /* Write to register 0x01: Register address space selection */
4408 /* Write to sensor register 0x02: Column Start */
4409 buf
[0] = 0x00; buf
[1] = 0x04; /* select sensor address space */
4410 buf
[2] = 0x00; buf
[3] = 0x16; /* start with column 22 */
4411 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x01, dev
->sensor_flags
, buf
); /* URBs 1994-1996 */
4412 /* Writes to sensor registers 0x03: Window Height */
4413 /* 0x04: Window Width */
4414 buf
[0] = 0x01; buf
[1] = 0xe6; /* 486 */
4415 buf
[2] = 0x02; buf
[3] = 0x86; /* 646 */
4416 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x03, dev
->sensor_flags
, buf
); /* URBs 1997-1999 */
4417 /* Writes to sensor registers 0x05: Horizontal Blanking */
4418 /* 0x06: Vertical Blanking */
4419 buf
[0] = 0x00; buf
[1] = 0x04; /* 4 columns (pixel clocks) // AT FIRST START + FIRST CYCLE: 0x00 0x00 */
4420 buf
[2] = 0x00; buf
[3] = 0x00; /* 0 rows */
4421 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x05, dev
->sensor_flags
, buf
); /* URBs 2000-2002 */
4422 /* Writes to sensor registers 0x07: Output Control */
4423 /* 0x08: Row Start */
4424 buf
[0] = 0x30; buf
[1] = 0x02; /* normal operation + chip enable + RESERVED options */
4425 buf
[2] = 0x00; buf
[3] = 0x08; /* row 8 */
4426 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x07, dev
->sensor_flags
, buf
); /* URBs 2003-2005 */
4427 /* "Dummy" write to sensor Register 0x11: UNDOCUMENTED */
4428 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x11, dev
->sensor_flags
, NULL
); /* URBs 2006-2007 */
4429 /* Writes to sensor registers 0x0c: Shutter Delay */
4430 /* 0x0d: Reset (Soft) (from MT9V011 datasheet) */
4431 buf
[0] = 0x00; buf
[1] = 0x00; /* 0 master clocks */
4432 buf
[2] = 0x00; buf
[3] = 0x00; /* return to normal operation */
4433 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x0c, dev
->sensor_flags
, buf
); /* URBs 2008-2010 */
4434 /* Writes to sensor registers 0x0e: UNDOCUMENTED */
4435 /* 0x0f: UNDOCUMENTED */
4436 buf
[0] = 0x00; buf
[1] = 0x00;
4437 buf
[2] = 0x00; buf
[3] = 0x00;
4438 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x0e, dev
->sensor_flags
, buf
); /* URBs 2011-2013 */
4439 /* Writes to sensor registers 0x10: UNDOCUMENTED */
4440 /* 0x11: UNDOCUMENTED */
4441 buf
[0] = 0x00; buf
[1] = 0x00;
4442 buf
[2] = 0x00; buf
[3] = 0x00;
4443 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x10, dev
->sensor_flags
, buf
); /* URBs 2014-2016 */
4444 /* Writes to sensor registers 0x12: 2X Zoom Col Start => 0x1e bit 0 must be set to activate zoom */
4445 /* 0x13: 2X Zoom Row Start => 0x1e bit 0 must be set to activate zoom */
4446 buf
[0] = 0x00; buf
[1] = 0xb0; /* column 176 */
4447 buf
[2] = 0x00; buf
[3] = 0x7c; /* row 124 */
4448 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x12, dev
->sensor_flags
, buf
); /* URBs 2017-2018 */
4449 /* Writes to sensor registers 0x14: UNDOCUMENTED */
4450 /* 0x15: UNDOCUMENTED */
4451 buf
[0] = 0x00; buf
[1] = 0x00;
4452 buf
[2] = 0x00; buf
[3] = 0x00;
4453 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x14, dev
->sensor_flags
, buf
); /* URBs 2019-2021 */
4454 /* Writes to sensor registers 0x16: UNDOCUMENTED */
4455 /* 0x17: UNDOCUMENTED */
4456 buf
[0] = 0x00; buf
[1] = 0x00;
4457 buf
[2] = 0x00; buf
[3] = 0x00;
4458 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x16, dev
->sensor_flags
, buf
); /* URBs 2022-2024 */
4459 /* Writes to sensor registers 0x18: UNDOCUMENTED */
4460 /* 0x19: UNDOCUMENTED */
4461 buf
[0] = 0x00; buf
[1] = 0x00;
4462 buf
[2] = 0x00; buf
[3] = 0x00;
4463 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x18, dev
->sensor_flags
, buf
); /* URBs 2025-2027 */
4464 /* Writes to sensor registers 0x1a: UNDOCUMENTED */
4465 /* 0x1b: UNDOCUMENTED */
4466 buf
[0] = 0x00; buf
[1] = 0x00;
4467 buf
[2] = 0x00; buf
[3] = 0x00;
4468 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x1a, dev
->sensor_flags
, buf
); /* URBs 2028-2030 */
4469 /* Writes to sensor registers 0x1c: UNDOCUMENTED */
4470 /* 0x1d: UNDOCUMENTED */
4471 buf
[0] = 0x00; buf
[1] = 0x00;
4472 buf
[2] = 0x00; buf
[3] = 0x00;
4473 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x1c, dev
->sensor_flags
, buf
); /* URBs 2031-2033 */
4474 /* Write to sensor register 0x30: RESERVED */
4475 buf
[0] = 0x00; buf
[1] = 0x00;
4476 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x30, dev
->sensor_flags
, buf
); /* URBs 2034-2036 */
4477 /* Write to sensor register 0x20: Read Mode */
4478 buf
[0] = 0x00; buf
[1] = 0x00; /* normal readout */
4479 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x20, dev
->sensor_flags
, buf
); /* URBs 2037-2039 */
4480 /* Writes to sensor registers 0x30: RESERVED */
4481 /* 0x31: RESERVED */
4482 buf
[0] = 0x00; buf
[1] = 0x05;
4483 buf
[2] = 0x00; buf
[3] = 0x00;
4484 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x30, dev
->sensor_flags
, buf
); /* URBs 2040-2042 */
4485 /* "Dummy" write to sensor Register 0x34: RESERVED */
4486 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x34, dev
->sensor_flags
, NULL
); /* URBs 2043-2044 */
4487 } else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
4488 /* Write to sensor register 0x07: Output Control */
4489 buf
[0] = 0x00; buf
[1] = 0x02; /* chip enable, normal operation */
4490 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x07, dev
->sensor_flags
, buf
);
4491 /* Write to sensor register 0x0d: Soft Reset */
4492 buf
[0] = 0x00; buf
[1] = 0x01; /* reset */
4493 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0d, dev
->sensor_flags
, buf
);
4494 /* Write to sensor register 0x0d: Soft Reset */
4495 buf
[0] = 0x00; buf
[1] = 0x00; /* resume operation */
4496 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0d, dev
->sensor_flags
, buf
);
4497 /* Writes to sensor registers 0x01: Row start */
4498 /* 0x02: Column Start */
4499 buf
[0] = 0x00; buf
[1] = 0x08; /* start with row 8 */
4500 buf
[2] = 0x00; buf
[3] = 0x16; /* start with column 22 */
4501 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x01, dev
->sensor_flags
, buf
);
4502 /* Writes to sensor registers 0x03: Window Height */
4503 /* 0x04: Window Width */
4504 buf
[0] = 0x01; buf
[1] = 0xe1; /* 481 */
4505 buf
[2] = 0x02; buf
[3] = 0x81; /* 641 */
4506 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x03, dev
->sensor_flags
, buf
);
4507 /* Writes to sensor registers 0x05: Horizontal Blanking */
4508 /* 0x06: Vertical Blanking */
4509 buf
[0] = 0x00; buf
[1] = 0x83; /* 131 columns (pixel clocks) */
4510 buf
[2] = 0x00; buf
[3] = 0x06; /* 6 rows */
4511 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x05, dev
->sensor_flags
, buf
);
4512 /* Write to sensor register 0x0d: Soft Reset */
4513 buf
[0] = 0x00; buf
[1] = 0x02; /* UNKNOWN */
4514 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0d, dev
->sensor_flags
, buf
);
4515 /* Writes to sensor registers 0x0a: Pixel Clock Speed */
4516 /* 0x0b: Frame Restart */
4517 buf
[0] = 0x00; buf
[1] = 0x00; /* default */
4518 buf
[2] = 0x00; buf
[3] = 0x00; /* (has no effect/no restart) */
4519 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x0a, dev
->sensor_flags
, buf
);
4520 /* Writes to sensor registers 0x0c: Shutter Delay */
4521 /* 0x0d: Soft Reset */
4522 buf
[0] = 0x00; buf
[1] = 0x00; /* 0 master clocks */
4523 buf
[2] = 0x00; buf
[3] = 0x00; /* resume operation */
4524 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x0c, dev
->sensor_flags
, buf
);
4525 /* Writes to sensor registers 0x0e: UNDOCUMENTED */
4526 /* 0x0f: UNDOCUMENTED */
4527 buf
[0] = 0x00; buf
[1] = 0x00;
4528 buf
[2] = 0x00; buf
[3] = 0x00;
4529 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x0e, dev
->sensor_flags
, buf
);
4530 /* Writes to sensor registers 0x10: UNDOCUMENTED */
4531 /* 0x11: UNDOCUMENTED */
4532 buf
[0] = 0x00; buf
[1] = 0x00;
4533 buf
[2] = 0x00; buf
[3] = 0x00;
4534 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x10, dev
->sensor_flags
, buf
);
4535 /* Writes to sensor registers 0x12: 2X Zoom Column Start (from MT9V111 datasheet) */
4536 /* 0x13: 2X Zoom Row Start (from MT9V111 datasheet) */
4537 buf
[0] = 0x00; buf
[1] = 0x00; /* column 0 => bit0 of reg 0x1e must be set to activate zoom */
4538 buf
[2] = 0x00; buf
[3] = 0x00; /* row 0 => bit0 of reg 0x1e must be set to activate zoom */
4539 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x12, dev
->sensor_flags
, buf
);
4540 /* Writes to sensor registers 0x14: UNDOCUMENTED */
4541 /* 0x15: UNDOCUMENTED */
4542 buf
[0] = 0x00; buf
[1] = 0x00;
4543 buf
[2] = 0x00; buf
[3] = 0x00;
4544 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x14, dev
->sensor_flags
, buf
);
4545 /* Writes to sensor registers 0x16: UNDOCUMENTED */
4546 /* 0x17: UNDOCUMENTED */
4547 buf
[0] = 0x00; buf
[1] = 0x00;
4548 buf
[2] = 0x00; buf
[3] = 0x00;
4549 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x16, dev
->sensor_flags
, buf
);
4550 /* Writes to sensor registers 0x18: UNDOCUMENTED */
4551 /* 0x19: UNDOCUMENTED */
4552 buf
[0] = 0x00; buf
[1] = 0x00;
4553 buf
[2] = 0x00; buf
[3] = 0x00;
4554 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x18, dev
->sensor_flags
, buf
);
4555 /* Writes to sensor registers 0x1a: UNDOCUMENTED */
4556 /* 0x1b: UNDOCUMENTED */
4557 buf
[0] = 0x00; buf
[1] = 0x00;
4558 buf
[2] = 0x00; buf
[3] = 0x00;
4559 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x1a, dev
->sensor_flags
, buf
);
4560 /* Writes to sensor registers 0x1c: UNDOCUMENTED */
4561 /* 0x1d: UNDOCUMENTED */
4562 buf
[0] = 0x00; buf
[1] = 0x00;
4563 buf
[2] = 0x00; buf
[3] = 0x00;
4564 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x1c, dev
->sensor_flags
, buf
);
4565 /* Write to sensor register 0x32: RESERVED */
4566 buf
[0] = 0x00; buf
[1] = 0x00;
4567 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x32, dev
->sensor_flags
, buf
);
4568 /* Writes to sensor registers 0x20: Read Mode */
4569 /* 0x21: RESERVED */
4570 buf
[0] = 0x11; buf
[1] = 0x01; /* output all frames (including bad frames) + UNDOCUMENTED */
4571 buf
[2] = 0x00; buf
[3] = 0x00;
4572 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x20, dev
->sensor_flags
, buf
);
4573 /* Writes to sensor registers 0x22: RESERVED */
4574 /* 0x23: UNDOCUMENTED */
4575 buf
[0] = 0x00; buf
[1] = 0x00;
4576 buf
[2] = 0x00; buf
[3] = 0x00;
4577 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x22, dev
->sensor_flags
, buf
);
4578 /* Writes to sensor registers 0x24: UNDOCUMENTED */
4579 /* 0x25: UNDOCUMENTED */
4580 buf
[0] = 0x00; buf
[1] = 0x00;
4581 buf
[2] = 0x00; buf
[3] = 0x00;
4582 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x24, dev
->sensor_flags
, buf
);
4583 /* Writes to sensor registers 0x26: UNDOCUMENTED */
4584 /* 0x27: RESERVED */
4585 buf
[0] = 0x00; buf
[1] = 0x00;
4586 buf
[2] = 0x00; buf
[3] = 0x24;
4587 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x26, dev
->sensor_flags
, buf
);
4588 /* "Dummy" write to sensor Register 0x30: RESERVED */
4589 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x30, dev
->sensor_flags
, NULL
);
4590 /* Writes to sensor registers 0x2f: RESERVED */
4591 /* 0x30: RESERVED */
4592 buf
[0] = 0xf7; buf
[1] = 0xb0;
4593 buf
[2] = 0x00; buf
[3] = 0x05;
4594 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x2f, dev
->sensor_flags
, buf
);
4595 /* Writes to sensor registers 0x31: RESERVED */
4596 /* 0x32: RESERVED */
4597 buf
[0] = 0x00; buf
[1] = 0x00;
4598 buf
[2] = 0x00; buf
[3] = 0x00;
4599 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x31, dev
->sensor_flags
, buf
);
4600 /* Writes to sensor registers 0x33: RESERVED */
4601 /* 0x34: RESERVED */
4602 buf
[0] = 0x00; buf
[1] = 0x00;
4603 buf
[2] = 0x01; buf
[3] = 0x00;
4604 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x33, dev
->sensor_flags
, buf
);
4605 /* "Dummy" write to sensor Register 0x3b: RESERVED */
4606 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x3b, dev
->sensor_flags
, NULL
);
4607 /* Write to sensor register 0x3d: RESERVED */
4608 buf
[0] = 0x06; buf
[1] = 0x8f;
4609 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x3d, dev
->sensor_flags
, buf
);
4610 /* Writes to sensor registers 0x40: RESERVED */
4611 /* 0x41: RESERVED */
4612 buf
[0] = 0x01; buf
[1] = 0xe0;
4613 buf
[2] = 0x00; buf
[3] = 0xd1;
4614 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x40, dev
->sensor_flags
, buf
);
4615 /* Write to sensor register 0x44: UNDOCUMENTED */
4616 buf
[0] = 0x00; buf
[1] = 0x82;
4617 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x44, dev
->sensor_flags
, buf
);
4618 /* Writes to sensor registers 0x5a: RESERVED */
4619 /* 0x5b: RESERVED */
4620 buf
[0] = 0x00; buf
[1] = 0x00;
4621 buf
[2] = 0x00; buf
[3] = 0x00;
4622 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x5a, dev
->sensor_flags
, buf
);
4623 /* Writes to sensor registers 0x5c: RESERVED */
4624 /* 0x5d: RESERVED */
4625 buf
[0] = 0x00; buf
[1] = 0x00;
4626 buf
[2] = 0x00; buf
[3] = 0x00;
4627 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x5c, dev
->sensor_flags
, buf
);
4628 /* Writes to sensor registers 0x5e: RESERVED */
4629 /* 0x5f: RESERVED */
4630 buf
[0] = 0x00; buf
[1] = 0x00;
4631 buf
[2] = 0xa3; buf
[3] = 0x1d;
4632 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x5e, dev
->sensor_flags
, buf
);
4633 /* "Dummy" write to sensor Register 0x68: UNDOCUMENTED */
4634 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x68, dev
->sensor_flags
, NULL
);
4635 /* Write to sensor register 0x62: RESERVED */
4636 buf
[0] = 0x06; buf
[1] = 0x11;
4637 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x62, dev
->sensor_flags
, buf
);
4640 UDIA_INFO("1 or more errors occured in I2C-message-block 1 !\n");
4643 /* END OF I2C MESSAGES */
4644 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4646 if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
4648 usb_microdia_control_write(dev
, 0x1007, buf
, 8);
4650 usb_microdia_control_write(dev
, 0x1006, buf
, 8);
4654 /* *** TEMPORARY SWITCH TO SLAVE ADDRESS 0x50, I2C READ ATTEMPT: */
4655 /* - WE CURRENTLY KNOW NO 6270 CAM THAT IS SUCCESSFULLY READ HERE */
4656 /* - IF READ FAILS, THIS IS NEVER DONE AGAIN (IN NEXT CYCLE OR FURTHER STARTS) */
4657 usb_microdia_control_read(dev
, 0x10c1, buf
, 1); /* returns 0x5c */
4659 usb_microdia_control_write(dev
, 0x10c1, buf
, 1);
4660 retI2C
= sn9c20x_read_i2c_data(dev
, 0x50, 1, 0x00, SN9C20X_I2C_2WIRE
, buf
);
4662 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");
4664 usb_microdia_control_write(dev
, 0x10c1, buf
, 1);
4667 buf
[0] = 0x47; /* ALEX: 0x44 */
4668 usb_microdia_control_write(dev
, 0x10e0, buf
, 1); /* URB 2045 */
4669 buf
[0] = 0x47; /* ALEX: 0x04 */
4670 usb_microdia_control_write(dev
, 0x10e0, buf
, 1); /* URB 2046 */
4672 usb_microdia_control_write(dev
, 0x1001, buf
, 1); /* URB 2047 */
4674 usb_microdia_control_write(dev
, 0x1001, buf
, 1); /* URB 2048 */
4675 buf
[0] = 0x84; /* ALEX: 0xc0 */
4676 usb_microdia_control_write(dev
, 0x1001, buf
, 1); /* URB 2049 */
4679 usb_microdia_control_write(dev, 0x1001, buf, 1);
4682 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4683 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4686 /* Writes to sensor registers 0x02: Column Start */
4687 /* 0x03: Window Height */
4688 buf
[0] = 0x00; buf
[1] = 0x16; /* coulmn 22 */
4689 buf
[2] = 0x01; buf
[3] = 0xe1; /* 481 */
4690 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x02, dev
->sensor_flags
, buf
); /* URBs 2050-2052 */
4691 /* Writes to sensor registers 0x04: Window Width */
4692 /* 0x05: Horizontal Blanking */
4693 buf
[0] = 0x02; buf
[1] = 0x81; /* 641 */
4694 buf
[2] = 0x00; buf
[3] = 0x04; /* 4 columns (pixel clocks) // AT FIRST START + FIRST CYCLE: 0x00 0x00 */
4695 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x04, dev
->sensor_flags
, buf
); /* URBs 2053-2055 */
4696 /* Writes to sensor registers 0x06: Vertical Blanking */
4697 /* 0x07: Output Control */
4698 buf
[0] = 0x00; buf
[1] = 0x00; /* 0 rows */
4699 buf
[2] = 0x30; buf
[3] = 0x02; /* normal operation + chip enable + RESERVED options */
4700 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x06, dev
->sensor_flags
, buf
); /* URBs 2056-2058 */
4701 /* Write to sensor register 0x0e: UNDOCUMENTED */
4702 buf
[0] = 0x00; buf
[1] = 0x08;
4703 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0e, dev
->sensor_flags
, buf
); /* URBs 2059-2061 */
4705 UDIA_INFO("1 or more errors occured in I2C-message-block 2 !\n");
4708 /* END OF I2C MESSAGES */
4709 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4712 buf
[0] = 0x02; buf
[1] = 0x00; buf
[2] = 0x02; buf
[3] = 0x00;
4713 buf
[4] = 0x28; buf
[5] = 0x3c;
4714 usb_microdia_control_write(dev
, 0x1180, buf
, 6); /* URB 2062 */
4715 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
4716 usb_microdia_control_write(dev
, 0x10fb, buf
, 5); /* URB 2063 */
4718 usb_microdia_control_write(dev
, 0x1189, buf
, 1); /* URB 2064 */
4719 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x6a; buf
[3] = 0x50;
4720 usb_microdia_control_write(dev
, 0x11a1, buf
, 4); /* URB 2065 */
4721 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x50; buf
[3] = 0x3c;
4722 usb_microdia_control_write(dev
, 0x11ab, buf
, 4); /* URB 2066 */
4723 buf
[0] = 0x78; /* ALEX: 0x7c */
4724 usb_microdia_control_write(dev
, 0x1000, buf
, 1); /* URB 2067 */
4725 buf
[0] = 0x18; /* ALEX: 0x1c */
4726 usb_microdia_control_write(dev
, 0x1002, buf
, 1); /* URB 2068 */
4727 buf
[0] = 0x18; /* ALEX: 0x1c */
4728 usb_microdia_control_write(dev
, 0x1002, buf
, 1); /* URB 2069 */
4730 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2070 */
4732 usb_microdia_control_write(dev
, 0x118a, buf
, 1); /* URB 2071 */
4734 usb_microdia_control_write(dev
, 0x0395, buf
, 1); /* URB 2072 */
4737 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2073 */
4738 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2074 // 0x38 */
4741 else if (buf
[0] == 0xb8)
4743 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2075 */
4744 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2076 // 0xb9 */
4747 else if (buf
[0] == 0xb9)
4749 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2077 */
4750 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2078 */
4753 else if (buf
[0] == 0xba)
4755 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2079 */
4756 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2080 // 0x3b */
4759 else if (buf
[0] == 0xbb)
4761 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2081 */
4762 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2082 // 0x3c */
4765 else if (buf
[0] == 0xbc)
4767 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2083 */
4768 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2084 // 0x3d */
4769 last_11b8
[0] = buf
[0];
4770 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4773 else if (buf
[0] == 0xbd)
4775 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2085 */
4776 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2086 */
4779 else if (buf
[0] == 0xbe)
4781 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2087 */
4782 usb_microdia_control_read(dev
, 0x11b8, last_11b8
, 1); /* URB 2088 */
4784 buf
[0] = last_11b8
[0] & 0xf0; /* 0xf0 or 0x70 */
4785 buf
[0] = buf
[0] | 0x0d; /* 0x0c => THIS VALUE SEEMS TO DEPEND ON WHAT WAS READ/WRITTEN IN THE LAST 8 READS/WRITES */
4786 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2089 */
4789 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4792 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4793 /* Write to sensor register 0x06: Vertical Blanking */
4794 buf
[0] = 0x00; buf
[1] = 0x2d; /* 45 rows */
4795 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x06, dev
->sensor_flags
, buf
); /* URBs 2090-2092 */
4796 /* Write to sensor register 0x05: Horizontal Blanking */
4797 buf
[0] = 0x00; buf
[1] = 0x04; /* 4 columns (pixel clocks) */
4798 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x05, dev
->sensor_flags
, buf
); /* URBs 2093-2095 */
4799 /* Write to sensor register 0x20: Read Mode */
4800 buf
[0] = 0x00; buf
[1] = 0x00; /* normal readout */
4801 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x20, dev
->sensor_flags
, buf
); /* URBs 2096-2098 */
4802 } else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
4803 /* Write to sensor register 0x0a: Pixel Clock Speed */
4804 buf
[0] = 0x00; buf
[1] = 0x00; /* default */
4805 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0a, dev
->sensor_flags
, buf
);
4806 /* Write to sensor register 0x06: Vertical Blanking */
4807 buf
[0] = 0x00; buf
[1] = 0x29; /* 41 rows */
4808 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x06, dev
->sensor_flags
, buf
);
4809 /* Write to sensor register 0x05: Horizontal Blanking */
4810 buf
[0] = 0x00; buf
[1] = 0x09; /* 9 columns (pixel clocks) */
4811 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x05, dev
->sensor_flags
, buf
);
4812 /* Write to sensor register 0x20: Read Mode */
4813 buf
[0] = 0x11; buf
[1] = 0x01; /* output all frames (including bad ones) + UNKNOWN */
4814 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x20, dev
->sensor_flags
, buf
);
4817 UDIA_INFO("1 or more errors occured in I2C-message-block 3 !\n");
4820 /* END OF I2C MESSAGES */
4821 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4825 usb_microdia_control_write(dev
, 0x1180, buf
, 1); /* URB 2099 */
4827 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4830 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4831 /* Write to sensor register 0x20: Read Mode */
4832 buf
[0] = 0x00; buf
[1] = 0x00; /* normal readout */
4833 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x20, dev
->sensor_flags
, buf
); /* URBs 2100-2102 */
4834 } else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
4835 /* Write to sensor register 0x20: Read Mode */
4836 buf
[0] = 0x11; buf
[1] = 0x01; /* output all frames (including bad ones) + UNKNOWN */
4837 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x20, dev
->sensor_flags
, buf
);
4840 UDIA_INFO("1 or more errors occured in I2C-message-block 4 !\n");
4843 /* END OF I2C MESSAGES */
4844 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4848 usb_microdia_control_write(dev
, 0x1182, buf
, 1); /* URB 2103 */
4851 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4854 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4855 /* Write to sensor register 0x09: Shutter Width */
4856 buf
[0] = 0x00; buf
[1] = 0x64; /* integration of 100 rows */
4857 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x09, dev
->sensor_flags
, buf
); /* URBs 2104-2106 */
4858 /* Write to sensor register 0x2b: Green 1 Gain */
4859 /* 0x2c: Blue Gain */
4860 buf
[0] = 0x00; buf
[1] = 0xa0; /* 32*0.03125*2 = 2 */
4861 buf
[2] = 0x00; buf
[3] = 0xa0; /* 32*0.03125*2 = 2 */
4862 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x2b, dev
->sensor_flags
, buf
); /* URBs 2107-2109 */
4863 /* Write to sensor register 0x2d: Red Gain */
4864 /* 0x2e: Green 2 Gain */
4865 buf
[0] = 0x00; buf
[1] = 0xa0; /* 32*0.03125*2 = 2 */
4866 buf
[2] = 0x00; buf
[3] = 0xa0; /* 32*0.03125*2 = 2 */
4867 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x2d, dev
->sensor_flags
, buf
); /* URBs 2110-2112 */
4868 /* "Dummy" write to sensor Register 0x33: RESERVED */
4869 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x33, dev
->sensor_flags
, NULL
); /* URBs 2113-2114 */
4870 } else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
4871 /* Write to sensor register 0x09: Shutter Width */
4872 buf
[0] = 0x00; buf
[1] = 0x64; /* integration of 100 rows */
4873 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x09, dev
->sensor_flags
, buf
);
4874 /* Write to sensor register 0x07: Output Control */
4875 buf
[0] = 0x00; buf
[1] = 0x03; /* dont update changes until bit0=0, chip enable, normal operation */
4876 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x07, dev
->sensor_flags
, buf
);
4877 /* Write to sensor register 0x2b: Green 1 Gain */
4878 /* 0x2c: Blue Gain */
4879 buf
[0] = 0x00; buf
[1] = 0x33; /* 51*0.03125*1 = 1.59375 */
4880 buf
[2] = 0x00; buf
[3] = 0xa0; /* 32*0.03125*2 = 2 */
4881 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x2b, dev
->sensor_flags
, buf
);
4882 /* Write to sensor register 0x2d: Red Gain */
4883 /* 0x2e: Green 2 Gain */
4884 buf
[0] = 0x00; buf
[1] = 0xa0; /* 32*0.03125*2 = 2 */
4885 buf
[2] = 0x00; buf
[3] = 0x33; /* 51*0.03125*1 = 1.59375 */
4886 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x2d, dev
->sensor_flags
, buf
);
4887 /* "Dummy" write to sensor Register 0x33: RESERVED */
4888 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0, 0x33, dev
->sensor_flags
, NULL
);
4889 /* Write to sensor register 0x07: Output Control */
4890 buf
[0] = 0x00; buf
[1] = 0x02; /* chip enable, normal operation */
4891 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x07, dev
->sensor_flags
, buf
);
4894 UDIA_INFO("1 or more errors occured in I2C-message-block 5 !\n");
4897 /* END OF I2C MESSAGES */
4898 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
4901 usb_microdia_control_write(dev
, 0x11ba, buf
, 1); /* URB 2119 */
4903 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
)
4905 else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
)
4907 usb_microdia_control_write(dev
, 0x118b, buf
, 1); /* URB 2124 */
4910 usb_microdia_control_write(dev
, 0x10f7, buf
, 1); /* URB 2135 */
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
, 0x10f8, buf
, 1); /* URB 2138 */
4918 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
)
4920 else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
)
4922 usb_microdia_control_write(dev
, 0x10fa, buf
, 1); /* URB 2139 */
4925 usb_microdia_control_write(dev
, 0x10f9, buf
, 1); /* URB 2140 */
4927 usb_microdia_control_write(dev
, 0x10f9, buf
, 1); /* URB 2141 */
4929 usb_microdia_control_write(dev
, 0x11ba, buf
, 1); /* URB 2142 */
4930 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x00;
4931 usb_microdia_control_write(dev
, 0x11bc, buf
, 4); /* URB 2143 */
4932 for (k
= 0; k
< 48; k
++)
4934 usb_microdia_control_write(dev
, 0x11c0, buf
, 48); /* URB 2144 */
4936 buf
[0] = 0x2d; buf
[1] = 0x2d; buf
[2] = 0x3a; buf
[3] = 0x05;
4937 buf
[4] = 0x04; buf
[5] = 0x3f;
4938 usb_microdia_control_write(dev
, 0x11a5, buf
, 6); /* URB 2149 */
4940 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4941 buf
[0] = 0x14; buf
[1] = 0xec; buf
[2] = 0x0a; buf
[3] = 0xf6;
4942 } else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
4943 buf
[0] = 0x28; buf
[1] = 0xd8; buf
[2] = 0x14; buf
[3] = 0xec;
4945 usb_microdia_control_write(dev
, 0x11af, buf
, 4); /* URB 2150 */
4947 buf
[0] = 0x32; buf
[1] = 0xdd; buf
[2] = 0x2d; buf
[3] = 0xdd;
4948 usb_microdia_control_write(dev
, 0x11b3, buf
, 4); /* URB 2151 */
4949 buf
[0] = 0x47; /* ALEX: 0x04 */
4950 usb_microdia_control_write(dev
, 0x10e0, buf
, 1); /* URB 2152 */
4952 usb_microdia_control_write(dev
, 0x1061, buf
, 1); /* URB 2153 */
4953 buf
[0] = 0x67; /* ALEX: 0x24 */
4954 usb_microdia_control_write(dev
, 0x10e0, buf
, 1); /* URB 2154 */
4955 buf
[0] = 0x0d; buf
[1] = 0x08; buf
[2] = 0x08; buf
[3] = 0x0d;
4956 buf
[4] = 0x08; buf
[5] = 0x08; buf
[6] = 0x0d; buf
[7] = 0x0d;
4957 buf
[8] = 0x0d; buf
[9] = 0x0d; buf
[10] = 0x11; buf
[11] = 0x0d;
4958 buf
[12] = 0x0d; buf
[13] = 0x11; buf
[14] = 0x15; buf
[15] = 0x21;
4959 buf
[16] = 0x15; buf
[17] = 0x15; buf
[18] = 0x11; buf
[19] = 0x11;
4960 buf
[20] = 0x15; buf
[21] = 0x2a; buf
[22] = 0x1d; buf
[23] = 0x1d;
4961 buf
[24] = 0x19; buf
[25] = 0x21; buf
[26] = 0x32; buf
[27] = 0x2a;
4962 buf
[28] = 0x32; buf
[29] = 0x32; buf
[30] = 0x2e; buf
[31] = 0x2a;
4963 buf
[32] = 0x2e; buf
[33] = 0x2e; buf
[34] = 0x36; buf
[35] = 0x3a;
4964 buf
[36] = 0x4b; buf
[37] = 0x43; buf
[38] = 0x36; buf
[39] = 0x3a;
4965 buf
[40] = 0x47; buf
[41] = 0x3a; buf
[42] = 0x2e; buf
[43] = 0x2e;
4966 buf
[44] = 0x43; buf
[45] = 0x5c; buf
[46] = 0x43; buf
[47] = 0x47;
4967 buf
[48] = 0x4f; buf
[49] = 0x53; buf
[50] = 0x58; buf
[51] = 0x58;
4968 buf
[52] = 0x58; buf
[53] = 0x32; buf
[54] = 0x3f; buf
[55] = 0x60;
4969 buf
[56] = 0x64; buf
[57] = 0x5c; buf
[58] = 0x53; buf
[59] = 0x64;
4970 buf
[60] = 0x4b; buf
[61] = 0x53; buf
[62] = 0x58; buf
[63] = 0x53;
4971 usb_microdia_control_write(dev
, 0x1100, buf
, 64); /* URB 2155 */
4972 buf
[0] = 0x0d; buf
[1] = 0x11; buf
[2] = 0x11; buf
[3] = 0x15;
4973 buf
[4] = 0x11; buf
[5] = 0x15; buf
[6] = 0x26; buf
[7] = 0x15;
4974 buf
[8] = 0x15; buf
[9] = 0x26; buf
[10] = 0x53; buf
[11] = 0x36;
4975 buf
[12] = 0x2e; buf
[13] = 0x36; buf
[14] = 0x53; buf
[15] = 0x53;
4976 buf
[16] = 0x53; buf
[17] = 0x53; buf
[18] = 0x53; buf
[19] = 0x53;
4977 buf
[20] = 0x53; buf
[21] = 0x53; buf
[22] = 0x53; buf
[23] = 0x53;
4978 buf
[24] = 0x53; buf
[25] = 0x53; buf
[26] = 0x53; buf
[27] = 0x53;
4979 buf
[28] = 0x53; buf
[29] = 0x53; buf
[30] = 0x53; buf
[31] = 0x53;
4980 buf
[32] = 0x53; buf
[33] = 0x53; buf
[34] = 0x53; buf
[35] = 0x53;
4981 buf
[36] = 0x53; buf
[37] = 0x53; buf
[38] = 0x53; buf
[39] = 0x53;
4982 buf
[40] = 0x53; buf
[41] = 0x53; buf
[42] = 0x53; buf
[43] = 0x53;
4983 buf
[44] = 0x53; buf
[45] = 0x53; buf
[46] = 0x53; buf
[47] = 0x53;
4984 buf
[48] = 0x53; buf
[49] = 0x53; buf
[50] = 0x53; buf
[51] = 0x53;
4985 buf
[52] = 0x53; buf
[53] = 0x53; buf
[54] = 0x53; buf
[55] = 0x53;
4986 buf
[56] = 0x53; buf
[57] = 0x53; buf
[58] = 0x53; buf
[59] = 0x53;
4987 buf
[60] = 0x53; buf
[61] = 0x53; buf
[62] = 0x53; buf
[63] = 0x53;
4988 usb_microdia_control_write(dev
, 0x1140, buf
, 64); /* URB 2156 */
4989 buf
[0] = 0x47; /* ALEX: 0x04 */
4990 usb_microdia_control_write(dev
, 0x10e0, buf
, 1); /* URB 2157 */
4992 usb_microdia_control_write(dev
, 0x1061, buf
, 1); /* URB 2158 */
4993 buf
[0] = 0x4b; /* ALEX: 0x08 */
4994 usb_microdia_control_write(dev
, 0x10e0, buf
, 1); /* URB 2159 */
4996 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
4997 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
5000 /* Writes to sensor registers 0x02: Column Start */
5001 /* 0x03: Window Hight */
5002 buf
[0] = 0x00; buf
[1] = 0x16; /* coulmn 22 */
5003 buf
[2] = 0x01; buf
[3] = 0xe1; /* 481 */
5004 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x02, dev
->sensor_flags
, buf
); /* URBs 2160-2162 */
5005 /* Writes to sensor registers 0x04: Window Width */
5006 /* 0x05: Horizontal Blanking */
5007 buf
[0] = 0x02; buf
[1] = 0x81; /* 641 */
5008 buf
[2] = 0x00; buf
[3] = 0x04; /* 4 columns (pixel clocks) */
5009 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x04, dev
->sensor_flags
, buf
); /* URBs 2163-2165 */
5010 /* Writes to sensor registers 0x06: Vertical Blanking */
5011 /* 0x07: Output Control */
5012 buf
[0] = 0x00; buf
[1] = 0x2d; /* 45 rows */
5013 buf
[2] = 0x30; buf
[3] = 0x02; /* RESERVED options */
5014 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, 0x06, dev
->sensor_flags
, buf
); /* URBs 2166-2167 */
5015 /* Writes to sensor register 0x0e: UNDOCUMENTED */
5016 buf
[0] = 0x00; buf
[1] = 0x08;
5017 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x0e, dev
->sensor_flags
, buf
); /* URBs 2168-2170 */
5019 UDIA_INFO("1 or more errors occured in I2C-message-block 6 !\n");
5022 /* END OF I2C MESSAGES */
5023 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
5024 } else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
5026 usb_microdia_control_write(dev
, 0x1007, buf
, 1);
5028 usb_microdia_control_write(dev
, 0x1006, buf
, 1);
5032 buf
[0] = 0x02; buf
[1] = 0x00; buf
[2] = 0x02; buf
[3] = 0x00;
5033 buf
[4] = 0x28; buf
[5] = 0x3c;
5034 usb_microdia_control_write(dev
, 0x1180, buf
, 6); /* URB 2171 */
5035 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
5036 usb_microdia_control_write(dev
, 0x10fb, buf
, 5); /* URB 2172 */
5038 usb_microdia_control_write(dev
, 0x1189, buf
, 1); /* URB 2173 */
5039 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x6a; buf
[3] = 0x50;
5040 usb_microdia_control_write(dev
, 0x11a1, buf
, 4); /* URB 2174 */
5041 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x50; buf
[3] = 0x3c;
5042 usb_microdia_control_write(dev
, 0x11ab, buf
, 4); /* URB 2175 */
5044 usb_microdia_control_write(dev
, 0x1061, buf
, 1); /* URB 2176 */
5046 usb_microdia_control_write(dev
, 0x11ba, buf
, 1); /* URB 2177 */
5048 usb_microdia_control_write(dev
, 0x11b9, buf
, 1); /* URB 2178 */
5050 usb_microdia_control_write(dev
, 0x11ba, buf
, 1); /* URB 2179 */
5052 usb_microdia_control_write(dev
, 0x1061, buf
, 1); /* URB 2180 */
5053 buf
[0] = 0x78; /* ALEX: 0x7c */
5054 usb_microdia_control_write(dev
, 0x1000, buf
, 1); /* URB 2181 */
5055 buf
[0] = 0x18; /* ALEX: 0x1c */
5056 usb_microdia_control_write(dev
, 0x1002, buf
, 1); /* URB 2182 */
5057 buf
[0] = 0x18; /* ALEX: 0x1c */
5058 usb_microdia_control_write(dev
, 0x1002, buf
, 1); /* URB 2183 */
5059 buf
[0] = 0x7d; /* ALEX: 0xfc */
5060 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2184 */
5062 usb_microdia_control_write(dev
, 0x118a, buf
, 1); /* URB 2185 */
5064 usb_microdia_control_write(dev
, 0x0395, buf
, 1); /* URB 2186 */
5066 if ((last_11b8
[0] == 0x3d) || (last_11b8
[0] == 0x3f))
5068 else if ((last_11b8
[0] == 0xbd) || (last_11b8
[0] == 0xbf))
5070 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2187 */
5071 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2188 // 0x38 */
5074 else if (buf
[0] == 0xb8)
5076 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2189 */
5077 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2190 // 0xb9 */
5080 else if (buf
[0] == 0xb9)
5082 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2191 */
5083 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2192 // 0xba */
5086 else if (buf
[0] == 0xba)
5088 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2193 */
5089 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2194 // 0x3b */
5092 else if (buf
[0] == 0xbb)
5094 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2195 */
5095 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2196 // 0x3c */
5098 else if (buf
[0] == 0xbc)
5100 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2197 */
5101 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2198 // 0x3d */
5102 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
5105 else if (buf
[0] == 0xbd)
5107 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2199 */
5108 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2200 */
5111 else if (buf
[0] == 0xbe)
5113 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2201 */
5114 usb_microdia_control_read(dev
, 0x11b8, buf
, 1); /* URB 2202 */
5116 buf
[0] = buf
[0] & 0xf0; /* 0xf0 or 0x70 */
5117 buf
[0] = buf
[0] | 0x0d; /* 0x0c => THIS VALUE SEEMS TO DEPEND ON WHAT WAS READ/WRITTEN IN THE LAST 8 READS/WRITES */
5118 usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 2089 */
5120 /* ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
5123 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
5124 /* Write to sensor register 0x06: Vertical Blanking */
5125 buf
[0] = 0x00; buf
[1] = 0x2d; /* 45 rows */
5126 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x06, dev
->sensor_flags
, buf
); /* URBs 2204-2206 */
5127 /* Write to sensor register 0x05: Horizontal Blanking */
5128 buf
[0] = 0x00; buf
[1] = 0x04; /* 4 columns (pixel clocks) */
5129 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x05, dev
->sensor_flags
, buf
); /* URBs 2207-2209 */
5130 /* Read of sensor register 0x36: Chip Version (mirror of reg0xff) */
5131 retI2C
+= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x36, dev
->sensor_flags
, buf
); /* URBs 2211-2215 // 0x82 0x3a */
5132 } else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
5133 /* Write to sensor register 0x0a: Pixel Clock Speed */
5134 buf
[0] = 0x00; buf
[1] = 0x00; /* default */
5135 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x06, dev
->sensor_flags
, buf
);
5136 /* Write to sensor register 0x06: Vertical Blanking */
5137 buf
[0] = 0x00; buf
[1] = 0x29; /* 41 rows */
5138 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x06, dev
->sensor_flags
, buf
);
5139 /* Write to sensor register 0x05: Horizontal Blanking */
5140 buf
[0] = 0x00; buf
[1] = 0x09; /* 9 columns (pixel clocks) */
5141 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x05, dev
->sensor_flags
, buf
);
5142 /* Read of sensor register 0x00: Chip Version (=reg0xff) */
5143 retI2C
+= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x00, dev
->sensor_flags
, buf
); /* 0x82 0x43 */
5146 UDIA_INFO("1 or more errors occured in I2C-message-block 7 !\n");
5149 /* END OF I2C MESSAGES */
5150 /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */
5154 usb_microdia_control_write(dev
, 0x1061, buf
, 1); /* URB 2216 */
5157 /*** NOW DRIVER DOES STOP-SEQUENCE
5158 - WITHOUT WRITES TO 0x1007 AND 0x1006 (URBs 3544-3550) => MT9V111
5159 - WRITING 0x40 INSTEAD OF 0x60 TO 0x1007 AND 0x1006 => MT9V011
5161 /*** 2nd, 3rd, ... CYCLE: ALL MESSAGES (URBs 1953 - URBs 2216) ARE REPEATED ***/
5162 /*** ----- WE DON'T DO THIS, IT SEEMS TO BE UNNECESSARY ----- ***/
5164 /* Setup IFP registers for AE and AWB (new, not in the logs): */
5165 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
5166 mt9v111_setup_autoexposure(dev
);
5167 mt9v111_setup_autowhitebalance(dev
);
5168 mt9v111_set_autocorrections(dev
, 1);
5171 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
)
5173 else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
)
5175 usb_microdia_control_write(dev
, 0x1007, buf
, 1); /* URB 2489 */
5176 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
)
5178 else if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
)
5180 usb_microdia_control_write(dev
, 0x1006, buf
, 1); /* URB 2490 */
5181 /* => These two writes seem to cause the cam to start sending isochronus USB messages */
5186 int microdia_627b_start_stream(struct usb_microdia
*dev
)
5193 buf
[0] = 0x00; /** Will have to be set for every single interrupt. */
5195 ret = usb_interrupt_msg(dev->udev, 0x00000083, buf, 0x0000001, &actual, 1000); // URB 43
5200 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 44 */
5205 //ret = usb_set_interface(dev->udev, 0, 8);
5206 //if(ret < 0) goto err;
5208 //buf[0] = 0x00; // Will have to be set for every single interrupt
5209 //ret = usb_interrupt_msg(dev->udev, 0x00000083, buf, 0x0000001, &actual, 1000); // URB 45
5214 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 46 */
5220 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 47 */
5226 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 48 */
5232 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 49 */
5238 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 50 */
5243 buf
[0] = 0x40; buf
[1] = 0x30; buf
[2] = 0x20; buf
[3] = 0x10; buf
[4] = 0x08;
5244 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5); /* URB 51 */
5249 buf
[0] = 0x80; buf
[1] = 0x21; buf
[2] = 0x00; buf
[3] = 0x00;
5250 buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x00;
5252 ret
= usb_microdia_control_write(dev
, reg
, buf
, 9); /* URB 52 */
5256 /* transferbufferlength is 18, but data is 24 bytes long, what to do ? */
5258 buf
[0] = 0x45; buf
[1] = 0x18; buf
[2] = 0x00; buf
[3] = 0x30; buf
[4] = 0x00;
5259 buf
[5] = 0x09; buf
[6] = 0x00; buf
[7] = 0xed; buf
[8] = 0x0f; buf
[9] = 0xda;
5260 buf
[10] = 0x0f; buf
[11] = 0x3a; buf
[12] = 0x00; buf
[13] = 0x3a; buf
[14] = 0x00;
5261 buf
[15] = 0xd0; buf
[16] = 0x0f; buf
[17] = 0xf7; buf
[18] = 0x0f; buf
[19] = 0x00;
5262 buf
[20] = 0x00; buf
[21] = 0x00; buf
[22] = 0x60; buf
[23] = 0x0a;
5263 ret
= usb_microdia_control_write(dev
, reg
, buf
, 24); /* URB 53 */
5268 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00;
5269 ret
= usb_microdia_control_write(dev
, reg
, buf
, 3); /* URB 54 */
5274 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
5275 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5); /* URB 55 */
5280 buf
[0] = 0x86; buf
[1] = 0x8c; buf
[2] = 0x08;
5281 ret
= usb_microdia_control_write(dev
, reg
, buf
, 3); /* URB 56 */
5286 buf
[0] = 0x00; buf
[1] = 0x20; buf
[2] = 0x20; buf
[3] = 0x20; buf
[4] = 0x20;
5287 buf
[5] = 0x00; buf
[6] = 0x24; buf
[7] = 0x3b; buf
[8] = 0x4f; buf
[9] = 0x61;
5288 buf
[10] = 0x71; buf
[11] = 0x80; buf
[12] = 0x8f; buf
[13] = 0x9d; buf
[14] = 0xab;
5289 buf
[15] = 0xb8; buf
[16] = 0xc4; buf
[17] = 0xd1; buf
[18] = 0xdd; buf
[19] = 0xe9;
5290 buf
[20] = 0xf4; buf
[21] = 0xff;
5291 ret
= usb_microdia_control_write(dev
, reg
, buf
, 22); /* URB 57 */
5296 buf
[0] = 0x00; buf
[1] = 0x00;
5297 ret
= usb_microdia_control_write(dev
, reg
, buf
, 2); /* URB 58 */
5302 buf
[0] = 0x60; buf
[1] = 0x28; buf
[2] = 0x00; buf
[3] = 0x08; buf
[4] = 0x00;
5303 buf
[5] = 0x40; buf
[6] = 0x01; buf
[7] = 0xf0; buf
[8] = 0x00;
5304 ret
= usb_microdia_control_write(dev
, reg
, buf
, 9); /* URB 59 */
5310 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1); /* URB 60 */
5316 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5321 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5322 OV7660_CTL_COM7
, dev
->sensor_flags
, buf
);
5326 buf
[0] = 0x01; buf
[1] = 0x74; buf
[2] = 0x92; buf
[3] = 0x00;
5327 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5328 OV7660_CTL_GAIN
, dev
->sensor_flags
, buf
);
5332 buf
[0] = 0x00; buf
[1] = 0x7d; buf
[2] = 0x62; buf
[3] = 0x00;
5333 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5334 OV7660_CTL_COM1
, dev
->sensor_flags
, buf
);
5338 buf
[0] = 0x83; buf
[1] = 0x01;
5339 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
5340 OV7660_CTL_RAVE
, dev
->sensor_flags
, buf
);
5344 buf
[0] = 0x00; buf
[1] = 0x08; buf
[2] = 0x04; buf
[3] = 0x62;
5345 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5346 OV7660_CTL_COM3
, dev
->sensor_flags
, buf
);
5350 buf
[0] = 0x00; buf
[1] = 0x40; buf
[2] = 0x05; buf
[3] = 0xf8;
5351 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5352 OV7660_CTL_AECH
, dev
->sensor_flags
, buf
);
5356 buf
[0] = 0x2e; buf
[1] = 0x00; buf
[2] = 0x02;
5357 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 3,
5358 OV7660_CTL_COM9
, dev
->sensor_flags
, buf
);
5362 buf
[0] = 0x10; buf
[1] = 0x60; buf
[2] = 0x02; buf
[3] = 0x7b;
5363 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5364 OV7660_CTL_HSTART
, dev
->sensor_flags
, buf
);
5369 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5370 OV7660_CTL_PSHFT
, dev
->sensor_flags
, buf
);
5374 buf
[0] = 0x01; buf
[1] = 0x0e;
5375 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
5376 OV7660_CTL_MVFP
, dev
->sensor_flags
, buf
);
5380 buf
[0] = 0x07; buf
[1] = 0x07; buf
[2] = 0x07; buf
[3] = 0x07;
5381 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5382 OV7660_CTL_BOS
, dev
->sensor_flags
, buf
);
5386 buf
[0] = 0x68; buf
[1] = 0x58; buf
[2] = 0xd4; buf
[3] = 0x80;
5387 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5388 OV7660_CTL_AEW
, dev
->sensor_flags
, buf
);
5392 buf
[0] = 0x80; buf
[1] = 0x3c; buf
[2] = 0x00; buf
[3] = 0x00;
5393 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5394 OV7660_CTL_GbBIAS
, dev
->sensor_flags
, buf
);
5398 buf
[0] = 0x80; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x62;
5399 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5400 OV7660_CTL_RBIAS
, dev
->sensor_flags
, buf
);
5404 buf
[0] = 0x08; buf
[1] = 0x30; buf
[2] = 0xb4;
5405 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 3,
5406 OV7660_CTL_HSYST
, dev
->sensor_flags
, buf
);
5410 buf
[0] = 0x00; buf
[1] = 0x07; buf
[2] = 0x84; buf
[3] = 0x00;
5411 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5412 OV7660_CTL_CHLF
, dev
->sensor_flags
, buf
);
5416 buf
[0] = 0x0c; buf
[1] = 0x02; buf
[2] = 0x43; buf
[3] = 0x00;
5417 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5418 OV7660_CTL_ADC
, dev
->sensor_flags
, buf
);
5422 buf
[0] = 0x02; buf
[1] = 0x6c; buf
[2] = 0x19; buf
[3] = 0x0e;
5423 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5424 OV7660_CTL_COM11
, dev
->sensor_flags
, buf
);
5428 buf
[0] = 0x41; buf
[1] = 0xc1; buf
[2] = 0x22; buf
[3] = 0x08;
5429 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5430 OV7660_CTL_EDGE
, dev
->sensor_flags
, buf
);
5435 reg
= 0x43; /* RSVD 0x43 is Reserved */
5436 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0,
5437 reg
, dev
->sensor_flags
, NULL
);
5441 reg
= 0x43; /* RSVD 0x43 is Reserved */
5442 buf
[0] = 0xf0; buf
[1] = 0x10; buf
[2] = 0x78; buf
[3] = 0xa8;
5443 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, reg
,
5444 dev
->sensor_flags
, buf
);
5448 reg
= 0x47; /* RSVD 0x47 is Reserved */
5449 buf
[0] = 0x60; buf
[1] = 0x80; buf
[2] = 0x00; buf
[3] = 0x00;
5450 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, reg
,
5451 dev
->sensor_flags
, buf
);
5455 reg
= 0x4b; /* RSVD 0x4b is Reserved */
5456 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x00;
5457 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4, reg
,
5458 dev
->sensor_flags
, buf
);
5463 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0,
5464 OV7660_CTL_MTX1
, dev
->sensor_flags
, NULL
);
5468 reg
= 0x59; /* RSVD 0x59 is Reserved */
5469 buf
[0] = 0xba; buf
[1] = 0x9a; buf
[2] = 0x22; buf
[3] = 0xb9;
5470 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5471 reg
, dev
->sensor_flags
, buf
);
5475 reg
= 0x5d; /* RSVD 0x5d is Reserved */
5476 buf
[0] = 0x9b; buf
[1] = 0x10; buf
[2] = 0xf0; buf
[3] = 0x05;
5477 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5478 reg
, dev
->sensor_flags
, buf
);
5482 reg
= 0x61; /* RSVD 0x61 is Reserved */
5484 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5485 reg
, dev
->sensor_flags
, buf
);
5489 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x50; buf
[3] = 0x30;
5490 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5491 OV7660_CTL_LCC1
, dev
->sensor_flags
, buf
);
5496 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5497 OV7660_CTL_LCC5
, dev
->sensor_flags
, buf
);
5501 buf
[0] = 0x80; buf
[1] = 0x7a; buf
[2] = 0x90; buf
[3] = 0x80;
5502 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5503 OV7660_CTL_MANU
, dev
->sensor_flags
, buf
);
5508 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5509 OV7660_CTL_DBLV
, dev
->sensor_flags
, buf
);
5513 reg
= 0x8b; /* RSVD 0x8b is Reserved */
5514 buf
[0] = 0x99; buf
[1] = 0x99; buf
[2] = 0xcf;
5515 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 3, reg
,
5516 dev
->sensor_flags
, buf
);
5520 buf
[0] = 0x00; buf
[1] = 0x00;
5521 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
5522 OV7660_CTL_DM_LNL
, dev
->sensor_flags
, buf
);
5528 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5534 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5539 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
5545 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5549 /* TRY TO READ FROM EEPROM: */
5551 ret
= sn9c20x_read_i2c_data(dev
, 0x50, 1, reg
, SN9C20X_I2C_2WIRE
, buf
);
5553 UDIA_INFO("No EEPROM found\n");
5555 UDIA_INFO("Read from EEPROM successful\n");
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);
5589 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5594 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5595 OV7660_CTL_VREF
, dev
->sensor_flags
, buf
);
5599 buf
[0] = 0x10; buf
[1] = 0x61; buf
[2] = 0x02; buf
[3] = 0x7a;
5600 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 4,
5601 OV7660_CTL_HSTART
, dev
->sensor_flags
, buf
);
5605 /* "Dummy" write: */
5606 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 0,
5607 OV7660_CTL_PSHFT
, dev
->sensor_flags
, NULL
);
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 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5637 OV7660_CTL_HREF
, dev
->sensor_flags
, buf
);
5642 buf
[0] = 0x01; buf
[1] = 0x00; buf
[2] = 0x01; buf
[3] = 0x00; buf
[4] = 0x28;
5644 ret
= usb_microdia_control_write(dev
, reg
, buf
, 6);
5649 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
5650 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5);
5656 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5661 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x6a; buf
[3] = 0x50;
5662 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
5667 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x50; buf
[3] = 0x3c;
5668 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
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);
5710 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5713 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
5719 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5722 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
5728 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5731 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
5737 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5740 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
5746 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5749 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
5755 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5758 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
5764 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5769 //ret = usb_microdia_control_read(dev, reg, buf, 1);
5770 //if(ret < 0) goto err;
5774 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5775 OV7660_CTL_CLKRC
, dev
->sensor_flags
, buf
);
5780 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5781 OV7660_CTL_EXHCH
, dev
->sensor_flags
, buf
);
5786 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5787 OV7660_CTL_EXHCL
, dev
->sensor_flags
, buf
);
5792 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5793 OV7660_CTL_DM_LNL
, dev
->sensor_flags
, buf
);
5798 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5799 OV7660_CTL_DM_LNH
, 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_MVFP
, 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_VREF
, dev
->sensor_flags
, buf
);
5828 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5829 OV7660_CTL_AECH
, dev
->sensor_flags
, buf
);
5834 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5835 OV7660_CTL_COM1
, dev
->sensor_flags
, buf
);
5840 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5841 OV7660_CTL_ADVFL
, dev
->sensor_flags
, buf
);
5846 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5847 OV7660_CTL_ADVFH
, dev
->sensor_flags
, buf
);
5852 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
5853 OV7660_CTL_GAIN
, dev
->sensor_flags
, buf
);
5857 buf
[0] = 0x78; buf
[1] = 0x78;
5858 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
5859 OV7660_CTL_BLUE
, dev
->sensor_flags
, buf
);
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);
5907 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5912 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x00;
5913 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
5918 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00;
5919 buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x00; buf
[8] = 0x00; buf
[9] = 0x00;
5920 buf
[10] = 0x00; buf
[11] = 0x00; buf
[12] = 0x00; buf
[13] = 0x00; buf
[14] = 0x00;
5921 buf
[15] = 0x00; buf
[16] = 0x00; buf
[17] = 0x00; buf
[18] = 0x00; buf
[19] = 0x00;
5922 buf
[20] = 0x00; buf
[21] = 0x00; buf
[22] = 0x00; buf
[23] = 0x00; buf
[24] = 0x00;
5923 buf
[25] = 0x00; buf
[26] = 0x00; buf
[27] = 0x00; buf
[28] = 0x00; buf
[29] = 0x00;
5924 buf
[30] = 0x00; buf
[31] = 0x00; buf
[32] = 0x00;
5925 ret
= usb_microdia_control_write(dev
, reg
, buf
, 33);
5928 /* transferbufferlength was only 30 ? */
5931 buf
[0] = 0x2d; buf
[1] = 0x2d; buf
[2] = 0x3a; buf
[3] = 0x05; buf
[4] = 0x04;
5933 ret
= usb_microdia_control_write(dev
, reg
, buf
, 6);
5938 buf
[0] = 0x28; buf
[1] = 0xd8; buf
[2] = 0x14; buf
[3] = 0xec;
5939 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
5944 buf
[0] = 0x32; buf
[1] = 0xdd; buf
[2] = 0x32; buf
[3] = 0xdd;
5945 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
5951 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5957 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5963 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
5968 buf
[0] = 0x0d; buf
[1] = 0x08; buf
[2] = 0x08; buf
[3] = 0x0d; buf
[4] = 0x08;
5969 buf
[5] = 0x08; buf
[6] = 0x0d; buf
[7] = 0x0d; buf
[8] = 0x0d; buf
[9] = 0x0d;
5970 buf
[10] = 0x11; buf
[11] = 0x0d; buf
[12] = 0x0d; buf
[13] = 0x11; buf
[14] = 0x15;
5971 buf
[15] = 0x21; buf
[16] = 0x15; buf
[17] = 0x15; buf
[18] = 0x11; buf
[19] = 0x11;
5972 buf
[20] = 0x15; buf
[21] = 0x2a; buf
[22] = 0x1d; buf
[23] = 0x1d; buf
[24] = 0x19;
5973 buf
[25] = 0x21; buf
[26] = 0x32; buf
[27] = 0x2a; buf
[28] = 0x32; buf
[29] = 0x32;
5974 buf
[30] = 0x2e; buf
[31] = 0x2a; buf
[32] = 0x2e; buf
[33] = 0x2e; buf
[34] = 0x36;
5975 buf
[35] = 0x3a; buf
[36] = 0x4b; buf
[37] = 0x43; buf
[38] = 0x36; buf
[39] = 0x3a;
5976 buf
[40] = 0x47; buf
[41] = 0x3a; buf
[42] = 0x2e; buf
[43] = 0x2e; buf
[44] = 0x43;
5977 buf
[45] = 0x5c; buf
[46] = 0x43; buf
[47] = 0x47; buf
[48] = 0x4f; buf
[49] = 0x53;
5978 buf
[50] = 0x58; buf
[51] = 0x58; buf
[52] = 0x58; buf
[53] = 0x32; buf
[54] = 0x3f;
5979 buf
[55] = 0x60; buf
[56] = 0x64; buf
[57] = 0x5c; buf
[58] = 0x53; buf
[59] = 0x64;
5980 buf
[60] = 0x4b; buf
[61] = 0x53; buf
[62] = 0x58; buf
[63] = 0x53;
5981 ret
= usb_microdia_control_write(dev
, reg
, buf
, 64);
5984 /* transferbufferlength is only 40 ? */
5987 buf
[0] = 0x0d; buf
[1] = 0x11; buf
[2] = 0x11; buf
[3] = 0x15; buf
[4] = 0x11;
5988 buf
[5] = 0x15; buf
[6] = 0x26; buf
[7] = 0x15; buf
[8] = 0x15; buf
[9] = 0x26;
5989 buf
[10] = 0x53; buf
[11] = 0x36; buf
[12] = 0x2e; buf
[13] = 0x36; buf
[14] = 0x53;
5990 buf
[15] = 0x53; buf
[16] = 0x53; buf
[17] = 0x53; buf
[18] = 0x53; buf
[19] = 0x53;
5991 buf
[20] = 0x53; buf
[21] = 0x53; buf
[22] = 0x53; buf
[23] = 0x53; buf
[24] = 0x53;
5992 buf
[25] = 0x53; buf
[26] = 0x53; buf
[27] = 0x53; buf
[28] = 0x53; buf
[29] = 0x53;
5993 buf
[30] = 0x53; buf
[31] = 0x53; buf
[32] = 0x53; buf
[33] = 0x53; buf
[34] = 0x53;
5994 buf
[35] = 0x53; buf
[36] = 0x53; buf
[37] = 0x53; buf
[38] = 0x53; buf
[39] = 0x53;
5995 buf
[40] = 0x53; buf
[41] = 0x53; buf
[42] = 0x53; buf
[43] = 0x53; buf
[44] = 0x53;
5996 buf
[45] = 0x53; buf
[46] = 0x53; buf
[47] = 0x53; buf
[48] = 0x53; buf
[49] = 0x53;
5997 buf
[50] = 0x53; buf
[51] = 0x53; buf
[52] = 0x53; buf
[53] = 0x53; buf
[54] = 0x53;
5998 buf
[55] = 0x53; buf
[56] = 0x53; buf
[57] = 0x53; buf
[58] = 0x53; buf
[59] = 0x53;
5999 buf
[60] = 0x53; buf
[61] = 0x53; buf
[62] = 0x53; buf
[63] = 0x53;
6000 ret
= usb_microdia_control_write(dev
, reg
, buf
, 64);
6003 /* transferbufferlength is only 40 ? */
6007 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6013 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6019 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6024 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6025 OV7660_CTL_VREF
, dev
->sensor_flags
, buf
);
6030 buf
[0] = 0x01; buf
[1] = 0x00; buf
[2] = 0x01; buf
[3] = 0x00; buf
[4] = 0x28;
6032 ret
= usb_microdia_control_write(dev
, reg
, buf
, 6);
6037 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
6038 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5);
6044 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6049 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x6a; buf
[3] = 0x50;
6050 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
6055 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x50; buf
[3] = 0x3c;
6056 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
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);
6128 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6131 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6137 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6140 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6146 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6149 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6155 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6158 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6164 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6167 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6173 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6176 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6182 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6187 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6188 OV7660_CTL_CLKRC
, dev
->sensor_flags
, buf
);
6193 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6194 OV7660_CTL_EXHCH
, dev
->sensor_flags
, buf
);
6199 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6200 OV7660_CTL_EXHCL
, dev
->sensor_flags
, buf
);
6205 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6206 OV7660_CTL_DM_LNL
, dev
->sensor_flags
, buf
);
6211 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6212 OV7660_CTL_DM_LNH
, dev
->sensor_flags
, buf
);
6216 ret
= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6217 OV7660_CTL_PID
, dev
->sensor_flags
, buf
);
6221 ret
= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6222 OV7660_CTL_VER
, dev
->sensor_flags
, buf
);
6226 ret
= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6227 OV7660_CTL_MIDH
, dev
->sensor_flags
, buf
);
6231 ret
= sn9c20x_read_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6232 OV7660_CTL_MIDL
, dev
->sensor_flags
, buf
);
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);
6262 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6267 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6268 OV7660_CTL_AECH
, dev
->sensor_flags
, buf
);
6273 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6274 OV7660_CTL_COM1
, dev
->sensor_flags
, buf
);
6279 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6280 OV7660_CTL_GAIN
, dev
->sensor_flags
, buf
);
6284 buf
[0] = 0x00; buf
[1] = 0x01;
6285 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
6286 OV7660_CTL_ADVFL
, dev
->sensor_flags
, buf
);
6291 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 1,
6292 OV7660_CTL_GAIN
, dev
->sensor_flags
, buf
);
6296 buf
[0] = 0x50; buf
[1] = 0x60;
6297 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
6298 OV7660_CTL_BLUE
, dev
->sensor_flags
, buf
);
6302 buf
[0] = 0xfc; buf
[1] = 0x04;
6303 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
6304 OV7660_CTL_ADVFL
, dev
->sensor_flags
, buf
);
6308 buf
[0] = 0x1f; buf
[1] = 0x00;
6309 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
6310 OV7660_CTL_GAIN
, dev
->sensor_flags
, buf
);
6314 buf
[0] = 0x48; buf
[1] = 0x58;
6315 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
6316 OV7660_CTL_BLUE
, dev
->sensor_flags
, buf
);
6320 buf
[0] = 0xf6; buf
[1] = 0x0b;
6321 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
6322 OV7660_CTL_ADVFL
, dev
->sensor_flags
, buf
);
6328 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6332 buf
[0] = 0x50; buf
[1] = 0x60;
6333 ret
= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
6334 OV7660_CTL_BLUE
, dev
->sensor_flags
, buf
);
6340 UDIA_ERROR("r/w in bridge register %x failed (%d)!\n", reg
, ret
);
6344 UDIA_ERROR("r/w in sensor register %x failed (%d)!\n", reg
, ret
);
6350 * @brief From UsbSnoop-plugin-parsed.log
6354 * @returns 0 (OK) or <0 (Error)
6356 * @author Vincent, Kuzja
6358 int microdia_6288_start_stream(struct usb_microdia
*dev
)
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);
6398 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6403 buf
[0] = 0x40; buf
[1] = 0x30; buf
[2] = 0x20;
6404 buf
[3] = 0x10; buf
[4] = 0x08;
6405 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5);
6410 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;
6411 ret
= usb_microdia_control_write(dev
, reg
, buf
, 9);
6416 buf
[0] = 0x44; buf
[1] = 0x18; buf
[2] = 0x00; buf
[3] = 0x30;
6417 buf
[4] = 0x00; buf
[5] = 0x09; buf
[6] = 0x00; buf
[7] = 0xed;
6418 buf
[8] = 0x0f; buf
[9] = 0xda; buf
[10] = 0x0f; buf
[11] = 0x3a;
6419 buf
[12] = 0x00; buf
[13] = 0x3a; buf
[14] = 0x00; buf
[15] = 0xd0;
6420 buf
[16] = 0x0f; buf
[17] = 0xf7; buf
[18] = 0x0f; buf
[19] = 0x00;
6421 buf
[20] = 0x00; buf
[21] = 0x00; buf
[22] = 0x60; buf
[23] = 0x0a;
6422 ret
= usb_microdia_control_write(dev
, reg
, buf
, 24);
6427 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00;
6428 ret
= usb_microdia_control_write(dev
, reg
, buf
, 3);
6433 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
6434 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5);
6439 buf
[0] = 0x86; buf
[1] = 0xcc; buf
[2] = 0x08;
6440 ret
= usb_microdia_control_write(dev
, reg
, buf
, 3);
6445 buf
[0] = 0x00; buf
[1] = 0x20; buf
[2] = 0x20; buf
[3] = 0x20;
6446 buf
[4] = 0x20; buf
[5] = 0x00; buf
[6] = 0x24; buf
[7] = 0x3b;
6447 buf
[8] = 0x4f; buf
[9] = 0x61; buf
[10] = 0x71; buf
[11] = 0x80;
6448 buf
[12] = 0x8f; buf
[13] = 0x9d; buf
[14] = 0xab; buf
[15] = 0xb8;
6449 buf
[16] = 0xc4; buf
[17] = 0xd1; buf
[18] = 0xdd; buf
[19] = 0xe9;
6450 buf
[20] = 0xf4; buf
[21] = 0xff;
6451 ret
= usb_microdia_control_write(dev
, reg
, buf
, 22);
6456 buf
[0] = 0x00; buf
[1] = 0x00;
6457 ret
= usb_microdia_control_write(dev
, reg
, buf
, 2);
6462 buf
[0] = 0x60; buf
[1] = 0x20; buf
[2] = 0x00; buf
[3] = 0x08;
6463 buf
[4] = 0x00; buf
[5] = 0x40; buf
[6] = 0x01; buf
[7] = 0xf0;
6465 ret
= usb_microdia_control_write(dev
, reg
, buf
, 9);
6471 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6477 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
6482 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x12; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6483 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6488 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6493 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6498 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x12; buf
[3] = 0x01; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6499 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6504 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6509 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6514 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x0d; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6515 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6520 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6525 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6530 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x0e; buf
[3] = 0x61; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6531 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6536 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6541 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6546 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x11; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6547 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6552 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6557 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6562 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x13; buf
[3] = 0xb8; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6563 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6568 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6573 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6578 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x14; buf
[3] = 0x3e; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6579 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6584 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6589 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6594 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x16; buf
[3] = 0x24; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6595 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6600 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6605 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6610 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x1e; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6611 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6616 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6621 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6626 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x1e; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6627 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6632 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6637 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6642 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x1e; buf
[3] = 0x04; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6643 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6648 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6653 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6658 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x27; buf
[3] = 0x08; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6659 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6664 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6669 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6674 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x28; buf
[3] = 0x08; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6675 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6680 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6685 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6690 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x29; buf
[3] = 0x15; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6691 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6696 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6701 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6706 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2c; buf
[3] = 0x08; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6707 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6712 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6717 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6722 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x32; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6723 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6728 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6733 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6738 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x34; buf
[3] = 0x3d; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6739 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6744 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6749 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6754 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x35; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6755 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6760 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6765 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6770 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x36; buf
[3] = 0xf8; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6771 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6776 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6781 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6786 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x38; buf
[3] = 0x12; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6787 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6792 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6797 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6802 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x39; buf
[3] = 0x57; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6803 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6808 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6813 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6818 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x3a; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6819 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6824 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6829 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6834 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x3b; buf
[3] = 0xcc; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6835 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6840 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6845 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6850 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x3c; buf
[3] = 0x0c; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6851 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6856 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6861 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6866 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x3d; buf
[3] = 0x19; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6867 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6872 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6877 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6882 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x3e; buf
[3] = 0x0c; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6883 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6888 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6893 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6898 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x3f; buf
[3] = 0x01; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6899 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6904 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6909 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6914 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x41; buf
[3] = 0x40; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6915 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6920 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6925 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6930 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x42; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6931 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6936 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6941 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6946 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x45; buf
[3] = 0x46; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6947 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6952 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6957 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6962 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x46; buf
[3] = 0x62; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6963 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6968 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6973 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6978 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x47; buf
[3] = 0x2a; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6979 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
6984 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6989 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
6994 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x48; buf
[3] = 0x3c; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
6995 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7000 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7005 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7010 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x4a; buf
[3] = 0xf0; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7011 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7016 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7021 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7026 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x4b; buf
[3] = 0xdc; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7027 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7032 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7037 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7042 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x4c; buf
[3] = 0xdc; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7043 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7048 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7053 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7058 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x4d; buf
[3] = 0xdc; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7059 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7064 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7069 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7074 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x4e; buf
[3] = 0xdc; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7075 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7080 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7085 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7090 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x69; buf
[3] = 0x02; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7091 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7096 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7101 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7106 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x6c; buf
[3] = 0x04; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7107 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7112 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7117 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7122 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x6f; buf
[3] = 0x9e; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7123 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7128 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7133 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7138 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x70; buf
[3] = 0x05; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7139 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7144 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7149 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7154 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x71; buf
[3] = 0x78; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7155 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7160 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7165 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7170 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x77; buf
[3] = 0x02; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7171 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7176 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7181 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7186 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x8a; buf
[3] = 0x23; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7187 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7192 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7197 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7202 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x8c; buf
[3] = 0x0d; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7203 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7208 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7213 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7218 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x90; buf
[3] = 0x7e; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7219 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7224 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7229 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7234 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x91; buf
[3] = 0x7c; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7235 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7240 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7245 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7250 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x9f; buf
[3] = 0x6e; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7251 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7256 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7261 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7266 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa0; buf
[3] = 0x6e; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7267 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7272 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7277 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7282 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa4; buf
[3] = 0x50; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7283 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7288 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7293 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7298 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa5; buf
[3] = 0x68; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7299 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7304 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7309 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7314 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa6; buf
[3] = 0x60; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7315 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7320 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7325 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7330 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa8; buf
[3] = 0xc1; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7331 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7336 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7341 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7346 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa9; buf
[3] = 0xfa; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7347 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7352 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7357 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7362 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xaa; buf
[3] = 0x92; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7363 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7368 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7373 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7378 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xab; buf
[3] = 0x04; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7379 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7384 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7389 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7394 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xac; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7395 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7400 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7405 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7410 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xad; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7411 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7416 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7421 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7426 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xae; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7427 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7432 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7437 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7442 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xaf; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7443 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7448 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7453 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7458 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xb2; buf
[3] = 0xf2; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7459 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7464 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7469 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7474 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xb3; buf
[3] = 0x20; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7475 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7480 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7485 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7490 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xb4; buf
[3] = 0x20; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7491 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7496 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7501 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7506 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xb5; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7507 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7512 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7517 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7522 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xb6; buf
[3] = 0xaf; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7523 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7528 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7533 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7538 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xbb; buf
[3] = 0xae; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7539 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7544 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7549 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7554 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xbc; buf
[3] = 0x44; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7555 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7560 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7565 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7570 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xbd; buf
[3] = 0x44; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7571 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7576 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7581 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7586 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xbe; buf
[3] = 0x3b; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7587 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7592 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7597 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7602 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xbf; buf
[3] = 0x3a; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7603 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7608 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7613 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7618 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xc0; buf
[3] = 0xe2; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7619 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7624 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7629 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7634 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xc1; buf
[3] = 0xc8; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7635 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7640 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7645 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7650 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xc2; buf
[3] = 0x01; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7651 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7656 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7661 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7666 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xc4; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7667 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7672 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7677 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7682 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xc6; buf
[3] = 0x85; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7683 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7688 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7693 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7698 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xc7; buf
[3] = 0x81; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7699 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7704 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7709 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7714 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xc9; buf
[3] = 0xe0; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7715 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7720 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7725 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7730 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xca; buf
[3] = 0xe8; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7731 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7736 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7741 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7746 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xcc; buf
[3] = 0xd8; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7747 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7752 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7757 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7762 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xcd; buf
[3] = 0x93; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7763 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7768 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7773 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7778 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7784 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
7789 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7790 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7795 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7800 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7801 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7806 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7811 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7812 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7817 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7822 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7823 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7828 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7833 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7834 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7839 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7844 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7845 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7850 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7855 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7856 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7861 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7866 buf
[0] = 0x90; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7867 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7872 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7877 buf
[0] = 0x90; 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 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7884 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7889 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7894 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7895 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7900 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7905 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7906 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7911 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7916 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7917 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7922 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7927 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7928 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7933 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7938 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7939 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7944 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7949 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7950 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7955 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7960 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7961 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7966 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
7971 buf
[0] = 0x92; buf
[1] = 0x50; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
7972 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
7977 ret
= usb_microdia_control_read(dev
, reg
, buf
, 5);
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);
8043 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8048 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x03; buf
[3] = 0x14; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8049 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8054 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8059 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8064 buf
[0] = 0xd0; buf
[1] = 0x30; buf
[2] = 0x17; buf
[3] = 0x1b; buf
[4] = 0xbc; buf
[5] = 0x01; buf
[6] = 0x7a; buf
[7] = 0x10;
8065 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8070 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8075 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8080 buf
[0] = 0x90; buf
[1] = 0x30; buf
[2] = 0x1b; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8081 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8086 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8091 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x32; buf
[3] = 0x82; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8092 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8097 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8102 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8107 buf
[0] = 0x05; buf
[1] = 0x00; buf
[2] = 0x01; buf
[3] = 0x00; buf
[4] = 0x50; buf
[5] = 0x78;
8108 ret
= usb_microdia_control_write(dev
, reg
, buf
, 6);
8113 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0; buf
[4] = 0x00;
8114 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5);
8120 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8126 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8131 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xd5; buf
[3] = 0xa0;
8132 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
8137 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xa0; buf
[3] = 0x78;
8138 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
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);
8180 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8185 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8191 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8196 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8202 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8207 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8213 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8218 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8224 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8229 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8235 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8240 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8246 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8251 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x11; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8252 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8257 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8262 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8267 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2a; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8268 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8273 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8278 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8283 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2b; buf
[3] = 0x06; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8284 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8289 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8294 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8299 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x92; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8300 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8305 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8310 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8315 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x93; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8316 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8321 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8326 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8331 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x1e; buf
[3] = 0x04; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8332 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8337 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8342 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8347 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x1e; buf
[3] = 0x04; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8348 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8353 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8358 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8364 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8369 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x10; buf
[3] = 0x7d; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8370 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8375 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8380 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8385 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x04; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8386 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8391 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8396 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8401 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa1; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8402 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8407 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8412 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8417 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2d; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8418 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8423 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8428 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8433 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2e; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8434 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8439 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8444 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8449 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8450 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8455 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8460 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8465 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x01; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8466 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8471 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8476 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8481 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x02; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8482 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8487 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8492 ret
= usb_microdia_control_read(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);
8540 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8545 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x00;
8546 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
8551 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0x00; buf
[3] = 0x00;
8552 buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x00;
8553 buf
[8] = 0x00; buf
[9] = 0x00; buf
[10] = 0x00; buf
[11] = 0x00;
8554 buf
[12] = 0x00; buf
[13] = 0x00; buf
[14] = 0x00; buf
[15] = 0x00;
8555 buf
[16] = 0x00; buf
[17] = 0x00; buf
[18] = 0x00; buf
[19] = 0x00;
8556 buf
[20] = 0x00; buf
[21] = 0x00; buf
[22] = 0x00; buf
[23] = 0x00;
8557 buf
[24] = 0x00; buf
[25] = 0x00; buf
[26] = 0x00; buf
[27] = 0x00;
8558 buf
[28] = 0x00; buf
[29] = 0x00; buf
[30] = 0x00; buf
[31] = 0x00;
8559 buf
[32] = 0x00; buf
[33] = 0x00; buf
[34] = 0x00; buf
[35] = 0x00;
8560 buf
[36] = 0x00; buf
[37] = 0x00; buf
[38] = 0x00; buf
[39] = 0x00;
8561 buf
[40] = 0x00; buf
[41] = 0x00; buf
[42] = 0x00; buf
[43] = 0x00;
8562 buf
[44] = 0x00; buf
[45] = 0x00; buf
[46] = 0x00; buf
[47] = 0x00;
8563 ret
= usb_microdia_control_write(dev
, reg
, buf
, 48);
8568 buf
[0] = 0x2d; buf
[1] = 0x2d; buf
[2] = 0x3a; buf
[3] = 0x05;
8569 buf
[4] = 0x04; buf
[5] = 0x3f;
8570 ret
= usb_microdia_control_write(dev
, reg
, buf
, 6);
8575 buf
[0] = 0x28; buf
[1] = 0xd8; buf
[2] = 0x14; buf
[3] = 0xec;
8576 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
8581 buf
[0] = 0x32; buf
[1] = 0xdd; buf
[2] = 0x32; buf
[3] = 0xdd;
8582 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
8588 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8594 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8600 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8605 buf
[0] = 0x0d; buf
[1] = 0x08; buf
[2] = 0x08; buf
[3] = 0x0d;
8606 buf
[4] = 0x08; buf
[5] = 0x08; buf
[6] = 0x0d; buf
[7] = 0x0d;
8607 buf
[8] = 0x0d; buf
[9] = 0x0d; buf
[10] = 0x11; buf
[11] = 0x0d;
8608 buf
[12] = 0x0d; buf
[13] = 0x11; buf
[14] = 0x15; buf
[15] = 0x21;
8609 buf
[16] = 0x15; buf
[17] = 0x15; buf
[18] = 0x11; buf
[19] = 0x11;
8610 buf
[20] = 0x15; buf
[21] = 0x2a; buf
[22] = 0x1d; buf
[23] = 0x1d;
8611 buf
[24] = 0x19; buf
[25] = 0x21; buf
[26] = 0x32; buf
[27] = 0x2a;
8612 buf
[28] = 0x32; buf
[29] = 0x32; buf
[30] = 0x2e; buf
[31] = 0x2a;
8613 buf
[32] = 0x2e; buf
[33] = 0x2e; buf
[34] = 0x36; buf
[35] = 0x3a;
8614 buf
[36] = 0x4b; buf
[37] = 0x43; buf
[38] = 0x36; buf
[39] = 0x3a;
8615 buf
[40] = 0x47; buf
[41] = 0x3a; buf
[42] = 0x2e; buf
[43] = 0x2e;
8616 buf
[44] = 0x43; buf
[45] = 0x5c; buf
[46] = 0x43; buf
[47] = 0x47;
8617 buf
[48] = 0x4f; buf
[49] = 0x53; buf
[50] = 0x58; buf
[51] = 0x58;
8618 buf
[52] = 0x58; buf
[53] = 0x32; buf
[54] = 0x3f; buf
[55] = 0x60;
8619 buf
[56] = 0x64; buf
[57] = 0x5c; buf
[58] = 0x53; buf
[59] = 0x64;
8620 buf
[60] = 0x4b; buf
[61] = 0x53; buf
[62] = 0x58; buf
[63] = 0x53;
8621 ret
= usb_microdia_control_write(dev
, reg
, buf
, 64);
8626 buf
[0] = 0x0d; buf
[1] = 0x11; buf
[2] = 0x11; buf
[3] = 0x15;
8627 buf
[4] = 0x11; buf
[5] = 0x15; buf
[6] = 0x26; buf
[7] = 0x15;
8628 buf
[8] = 0x15; buf
[9] = 0x26; buf
[10] = 0x53; buf
[11] = 0x36;
8629 buf
[12] = 0x2e; buf
[13] = 0x36; buf
[14] = 0x53; buf
[15] = 0x53;
8630 buf
[16] = 0x53; buf
[17] = 0x53; buf
[18] = 0x53; buf
[19] = 0x53;
8631 buf
[20] = 0x53; buf
[21] = 0x53; buf
[22] = 0x53; buf
[23] = 0x53;
8632 buf
[24] = 0x53; buf
[25] = 0x53; buf
[26] = 0x53; buf
[27] = 0x53;
8633 buf
[28] = 0x53; buf
[29] = 0x53; buf
[30] = 0x53; buf
[31] = 0x53;
8634 buf
[32] = 0x53; buf
[33] = 0x53; buf
[34] = 0x53; buf
[35] = 0x53;
8635 buf
[36] = 0x53; buf
[37] = 0x53; buf
[38] = 0x53; buf
[39] = 0x53;
8636 buf
[40] = 0x53; buf
[41] = 0x53; buf
[42] = 0x53; buf
[43] = 0x53;
8637 buf
[44] = 0x53; buf
[45] = 0x53; buf
[46] = 0x53; buf
[47] = 0x53;
8638 buf
[48] = 0x53; buf
[49] = 0x53; buf
[50] = 0x53; buf
[51] = 0x53;
8639 buf
[52] = 0x53; buf
[53] = 0x53; buf
[54] = 0x53; buf
[55] = 0x53;
8640 buf
[56] = 0x53; buf
[57] = 0x53; buf
[58] = 0x53; buf
[59] = 0x53;
8641 buf
[60] = 0x53; buf
[61] = 0x53; buf
[62] = 0x53; buf
[63] = 0x53;
8642 ret
= usb_microdia_control_write(dev
, reg
, buf
, 64);
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);
8690 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8695 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x03; buf
[3] = 0x14; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8696 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8701 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8706 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8711 buf
[0] = 0xd0; buf
[1] = 0x30; buf
[2] = 0x17; buf
[3] = 0x1b; buf
[4] = 0xbc; buf
[5] = 0x01; buf
[6] = 0x7a; buf
[7] = 0x10;
8712 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8717 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8722 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8727 buf
[0] = 0x90; buf
[1] = 0x30; buf
[2] = 0x1b; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8728 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8733 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8738 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x32; buf
[3] = 0x82; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8739 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8744 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8749 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8754 buf
[0] = 0x05; buf
[1] = 0x00; buf
[2] = 0x01; buf
[3] = 0x00;
8755 buf
[4] = 0x50; buf
[5] = 0x78;
8756 ret
= usb_microdia_control_write(dev
, reg
, buf
, 6);
8761 buf
[0] = 0x00; buf
[1] = 0xa0; buf
[2] = 0x00; buf
[3] = 0xf0;
8763 ret
= usb_microdia_control_write(dev
, reg
, buf
, 5);
8769 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8774 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xd5; buf
[3] = 0xa0;
8775 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
8780 buf
[0] = 0x00; buf
[1] = 0x00; buf
[2] = 0xa0; buf
[3] = 0x78;
8781 ret
= usb_microdia_control_write(dev
, reg
, buf
, 4);
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);
8853 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8858 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8864 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8869 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8875 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8880 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8886 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8891 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8897 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8902 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8908 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8913 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8919 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
8924 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x11; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8925 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8930 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8935 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8940 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2a; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8941 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8946 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8951 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8956 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2b; buf
[3] = 0x70; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8957 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8962 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8967 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8972 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x92; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8973 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8978 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8983 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8988 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x93; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
8989 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
8994 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
8999 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9004 buf
[0] = 0x90; buf
[1] = 0x30; buf
[2] = 0x0a; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9005 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9010 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9015 buf
[0] = 0x92; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9016 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9021 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9026 ret
= usb_microdia_control_read(dev
, reg
, buf
, 5);
9031 buf
[0] = 0x90; buf
[1] = 0x30; buf
[2] = 0x0b; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9032 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9037 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9042 buf
[0] = 0x92; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9043 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9048 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9053 ret
= usb_microdia_control_read(dev
, reg
, buf
, 5);
9058 buf
[0] = 0x90; buf
[1] = 0x30; buf
[2] = 0x1c; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9059 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9064 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9069 buf
[0] = 0x92; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9070 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9075 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9080 ret
= usb_microdia_control_read(dev
, reg
, buf
, 5);
9085 buf
[0] = 0x90; buf
[1] = 0x30; buf
[2] = 0x1d; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9086 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9091 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9096 buf
[0] = 0x92; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9097 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9102 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9107 ret
= usb_microdia_control_read(dev
, reg
, buf
, 5);
9113 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9119 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9125 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9130 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0xa1; buf
[3] = 0x01; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9131 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9136 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9141 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9146 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x10; buf
[3] = 0x06; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9147 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9152 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9157 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9162 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x04; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9163 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9168 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9173 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9178 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2d; buf
[3] = 0x36; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9179 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9184 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9189 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9194 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x2e; buf
[3] = 0x00; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9195 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9200 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9205 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9210 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x01; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x15;
9211 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9216 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9221 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9226 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x06; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x15;
9227 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9232 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9237 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9242 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x01; buf
[3] = 0x94; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9243 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9248 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9253 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9258 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x02; buf
[3] = 0x8d; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9259 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9264 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9269 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9274 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x09; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x15;
9275 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9280 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9285 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9290 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x01; buf
[3] = 0x95; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9291 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9296 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9301 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9306 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x02; buf
[3] = 0x85; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9307 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9312 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9317 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9322 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x00; buf
[3] = 0x0c; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x15;
9323 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9328 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9333 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9338 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x01; buf
[3] = 0x96; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9339 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9344 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9349 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9354 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x02; buf
[3] = 0x80; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9355 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9360 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9365 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9370 buf
[0] = 0xa0; buf
[1] = 0x30; buf
[2] = 0x02; buf
[3] = 0x7c; buf
[4] = 0x00; buf
[5] = 0x00; buf
[6] = 0x00; buf
[7] = 0x10;
9371 ret
= usb_microdia_control_write(dev
, reg
, buf
, 8);
9376 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9381 ret
= usb_microdia_control_read(dev
, reg
, buf
, 1);
9387 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9393 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9400 /* END OF MICRODIA 6288 START STREAM */
9404 UDIA_ERROR("r/w in Register %x failed (%d)!\n", reg
, ret
);
9408 int dev_microdia_stop_stream(struct usb_microdia
*dev
)
9411 if (dev
&& dev
->stop_stream
)
9412 ret
= dev
->stop_stream(dev
);
9418 * @brief From stop.htm
9426 * For SN9C201 with MI1310.
9427 * This function has not been tested yet.
9429 int microdia_6242_stop_stream(struct usb_microdia
*dev
)
9433 __u8 only10c0
[3] = {0x0d, 0x00, 0x00};
9436 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
9439 usb_microdia_control_write(dev
, 0x1007, buf
, 1);
9442 usb_microdia_control_write(dev
, 0x1006, buf
, 1);
9444 sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2,
9445 only10c0
[0], dev
->sensor_flags
, &only10c0
[1]);
9448 usb_microdia_control_write(dev
, 0x1000, buf
, 1);
9451 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
9454 usb_microdia_control_write(dev
, 0x1007, buf
, 1);
9457 usb_microdia_control_write(dev
, 0x1006, buf
, 1);
9460 buf
[0] = 0x98; buf
[1] = 0xe7; buf
[2] = 0x11;
9461 usb_microdia_control_write(dev
, 0x1000, buf
, 3);
9464 * After the select alternate setting 0 is actually another transfer:
9466 * usb_microdia_control_write(dev, 0x1066, buf, 1);
9474 * @brief From stopstream.log
9482 * For SN9C201 with SOI968.
9483 * I don't whether the function really stops the stream.
9484 * Nevertheless the LED on the webcam now stops glowing.
9485 * The function is very similar to "microdia_624f_stop_stream".
9487 int microdia_624e_stop_stream(struct usb_microdia
*dev
)
9492 usb_microdia_control_write(dev
, 0x1061, buf
, 1);
9494 /* Next two writes added because it works better.
9495 * The LED stops glowing and I think the stream does too.
9496 * 0x20 = 0b00100000 which is the minimal of what the
9497 * other stopstreams have in common.
9500 usb_microdia_control_write(dev
, 0x1007, buf
, 1);
9503 usb_microdia_control_write(dev
, 0x1006, buf
, 1);
9506 usb_microdia_control_write(dev
, 0x1000, buf
, 1);
9509 usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
9511 buf
[0] = 0x38; buf
[1] = 0xe7; buf
[2] = 0x11;
9512 usb_microdia_control_write(dev
, 0x1000, buf
, 3);
9514 usb_microdia_control_read(dev
, 0x1066, buf
, 1);
9520 int microdia_624f_stop_stream(struct usb_microdia
*dev
)
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);
9558 ret
= usb_microdia_control_write(dev
, command
, buf
, 1);
9566 ret
= usb_microdia_control_write(dev
, command
, buf
, 3);
9571 ret
= usb_microdia_control_read(dev
, command
, buf
, 1);
9576 ret
= usb_microdia_control_write(dev
, command
, buf
, 1);
9583 UDIA_ERROR("command %x failed (%d)!\n", command
, ret
);
9587 int microdia_6260_stop_stream(struct usb_microdia
*dev
)
9593 ret
= usb_microdia_control_write(dev
, 0x1061, buf
, 1);
9595 ret
= usb_microdia_control_write(dev
, 0x1000, buf
, 1);
9597 ret
= usb_microdia_control_write(dev
, 0x11b8, buf
, 1);
9599 ret
= usb_microdia_control_write(dev
, 0x1007, buf
, 1);
9601 ret
= usb_microdia_control_write(dev
, 0x1006, buf
, 1);
9603 buf
[0] = 0x98; buf
[1] = 0xe7; buf
[2] = 0x11;
9604 ret
= usb_microdia_control_write(dev
, 0x1000, buf
, 3);
9607 ret
= usb_microdia_control_write(dev
, 0x1066, buf
, 1);
9608 ret
= usb_microdia_control_read(dev
, 0x1045, buf
, 1);
9610 ret
= usb_microdia_control_write(dev
, 0x1045, buf
, 1);
9612 ret
= usb_microdia_control_write(dev
, 0x10c8, buf
, 1);
9614 ret
= usb_microdia_control_write(dev
, 0x1020, buf
, 1);
9620 * @brief From 7 start-stop-logs (made by Alex Carlos, Boris Borisov, bohzan and Comer352l)
9624 * @returns 0 (ok) or -1 (error)
9628 * Windows driver version: 5.7.23.000
9629 * Windows versions: 2000 and XP
9630 * USB-Logger: SniffUSB 1.8 and 2.0, USBTrace 2.0, SnoopyPro
9631 * All logs were made using AMCAP with 640x480, RGB24
9633 int microdia_6270_stop_stream(struct usb_microdia
*dev
)
9639 if (dev
->sensor_slave_address
== MT9V111_I2C_SLAVE_ADDRESS
) {
9641 ret
+= usb_microdia_control_write(dev
, 0x1007, buf
, 1); /* URB 3541 */
9643 ret
+= usb_microdia_control_write(dev
, 0x1006, buf
, 1); /* URB 3542 */
9644 /* => These two writes seem to cause the cam to stop sending isochronus USB messages */
9647 ret
+= usb_microdia_control_write(dev
, 0x1061, buf
, 1); /* URB 3544 */
9648 if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
9650 ret
+= usb_microdia_control_write(dev
, 0x1007, buf
, 1); /* URB 3541 */
9652 ret
+= usb_microdia_control_write(dev
, 0x1006, buf
, 1); /* URB 3542 */
9654 if (dev
->sensor_slave_address
== MT9V011_I2C_SLAVE_ADDRESS
) {
9655 /* Write to sensor register 0x07: Output Control */
9656 buf
[0] = 0x00; buf
[1] = 0x00; /* stop sensor readout, normal operation */
9657 retI2C
+= sn9c20x_write_i2c_data(dev
, dev
->sensor_slave_address
, 2, 0x07, dev
->sensor_flags
, buf
);
9659 buf
[0] = 0x38; /* ALEX: 0x3c */
9660 ret
+= usb_microdia_control_write(dev
, 0x1000, buf
, 1); /* URB 3545 */
9661 buf
[0] = 0x6d; /* ALEX: 0xec; FRANK: also 0x6c */
9662 ret
+= usb_microdia_control_write(dev
, 0x11b8, buf
, 1); /* URB 3546 */
9663 buf
[0] = 0x38; buf
[1] = 0xe7; buf
[2] = 0x11;
9664 ret
+= usb_microdia_control_write(dev
, 0x1000, buf
, 3); /* URB 3547 */
9666 /* INTERRUPT COMMING BACK (URB 2227) */
9667 /* SELECT ALTERNATE SETTINGS (URB 3548) */
9668 /* INTERRUPT GOING DOWN (URB 3549) */
9671 ret
+= usb_microdia_control_write(dev
, 0x1066, buf
, 1); /* URB 3550 */
9674 UDIA_INFO("One ore more errors occured while stopping stream !\n");
9681 int microdia_627b_stop_stream(struct usb_microdia
*dev
)
9689 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9695 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9702 //ret = usb_microdia_control_write(dev, reg, buf, 1);
9703 //if(ret < 0) goto err;
9707 //ret = usb_microdia_control_write(dev, reg, buf, 1);
9708 //if(ret < 0) goto err;
9713 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9720 //ret = usb_microdia_control_write(dev, reg, buf, 1);
9721 //if(ret < 0) goto err;
9725 //ret = usb_microdia_control_write(dev, reg, buf, 1);
9726 //if(ret < 0) goto err;
9731 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9737 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9742 buf
[0] = 0x38; buf
[1] = 0xe7; buf
[2] = 0x11;
9743 ret
= usb_microdia_control_write(dev
, reg
, buf
, 3);
9749 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9755 UDIA_ERROR("r/w in Register %x failed (%d)!\n", reg
, ret
);
9760 * @brief From UsbSnoop-plugin-parsed.log
9764 * @returns 0 (OK) or <0 (Error)
9766 * @author Vincent, Kuzja
9768 int microdia_6288_stop_stream(struct usb_microdia
*dev
)
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);
9800 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9805 buf
[0] = 0x98; buf
[1] = 0xe7; buf
[2] = 0x11;
9806 ret
= usb_microdia_control_write(dev
, reg
, buf
, 3);
9812 ret
= usb_microdia_control_write(dev
, reg
, buf
, 1);
9818 UDIA_ERROR("r/w in Register %x failed (%d)!\n", reg
, ret
);
9822 int microdia_624f_flip_detect(struct usb_microdia
*dev
)
9827 ret
= usb_microdia_control_read(dev
, 0x1009, &val
, 1);
9831 dev
->vsettings
.vflip
= 1;
9833 dev
->vsettings
.vflip
= 0;
9837 int microdia_6260_flip_detect(struct usb_microdia
*dev
)
9839 const __u8 flip_bit
= 0x01;
9842 static __u8 flip_reg
= flip_bit
;
9845 ret
= usb_microdia_control_read(dev
, 0x1009, &val
, 1);
9848 if (flip_reg
!= (val
& flip_bit
)) {
9853 ret
= ov7670_auto_flip(dev
, vflip
);
9854 flip_reg
= (val
& flip_bit
);