Lines Matching +full:4 +full:-
1 // SPDX-License-Identifier: GPL-2.0-or-later
44 .sizeimage = 640 * 480 * 3 / 4,
53 .sizeimage = 352 * 288 * 3 / 4,
58 /* the bytes to write are in gspca_dev->usb_buf */
65 command[3], command[4], command[5]); in sn9c2028_command()
67 memcpy(gspca_dev->usb_buf, command, 6); in sn9c2028_command()
68 rc = usb_control_msg(gspca_dev->dev, in sn9c2028_command()
69 usb_sndctrlpipe(gspca_dev->dev, 0), in sn9c2028_command()
72 2, 0, gspca_dev->usb_buf, 6, 500); in sn9c2028_command()
75 gspca_dev->usb_buf[0], rc); in sn9c2028_command()
86 rc = usb_control_msg(gspca_dev->dev, in sn9c2028_read1()
87 usb_rcvctrlpipe(gspca_dev->dev, 0), in sn9c2028_read1()
90 1, 0, gspca_dev->usb_buf, 1, 500); in sn9c2028_read1()
93 return (rc < 0) ? rc : -EIO; in sn9c2028_read1()
96 gspca_dev->usb_buf[0]); in sn9c2028_read1()
97 return gspca_dev->usb_buf[0]; in sn9c2028_read1()
103 rc = usb_control_msg(gspca_dev->dev, in sn9c2028_read4()
104 usb_rcvctrlpipe(gspca_dev->dev, 0), in sn9c2028_read4()
107 4, 0, gspca_dev->usb_buf, 4, 500); in sn9c2028_read4()
108 if (rc != 4) { in sn9c2028_read4()
110 return (rc < 0) ? rc : -EIO; in sn9c2028_read4()
112 memcpy(reading, gspca_dev->usb_buf, 4); in sn9c2028_read4()
121 __u8 reading[4]; in sn9c2028_long_command()
127 status = -1; in sn9c2028_long_command()
135 memset(reading, 0, 4); in sn9c2028_long_command()
169 struct cam *cam = &gspca_dev->cam; in sd_config()
172 id->idVendor, id->idProduct); in sd_config()
174 sd->model = id->idProduct; in sd_config()
176 switch (sd->model) { in sd_config()
193 gspca_dbg(gspca_dev, D_PROBE, "Mini-Shotz ms-350 camera\n"); in sd_config()
197 cam->input_flags = V4L2_IN_ST_VFLIP | V4L2_IN_ST_HFLIP; in sd_config()
201 switch (sd->model) { in sd_config()
205 cam->cam_mode = cif_mode; in sd_config()
206 cam->nmodes = ARRAY_SIZE(cif_mode); in sd_config()
209 cam->cam_mode = vga_mode; in sd_config()
210 cam->nmodes = ARRAY_SIZE(vga_mode); in sd_config()
230 int i, err_code = -1; in run_start_commands()
234 case 4: in run_start_commands()
261 if (!gspca_dev->streaming) in set_gain()
264 switch (sd->model) { in set_gain()
278 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
281 gspca_dev->usb_err = 0; in sd_s_ctrl()
283 if (!gspca_dev->streaming) in sd_s_ctrl()
286 switch (ctrl->id) { in sd_s_ctrl()
289 set_gain(gspca_dev, ctrl->val); in sd_s_ctrl()
293 set_gain(gspca_dev, sd->gain->val); in sd_s_ctrl()
296 return gspca_dev->usb_err; in sd_s_ctrl()
306 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
309 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()
312 switch (sd->model) { in sd_init_controls()
314 sd->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
316 sd->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
328 {{0x0c, 0x01, 0x00, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
329 {{0x13, 0x20, 0x01, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
330 {{0x13, 0x21, 0x01, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
331 {{0x13, 0x22, 0x01, 0x04, 0x00, 0x00}, 4}, in start_spy_cam()
332 {{0x13, 0x23, 0x01, 0x03, 0x00, 0x00}, 4}, in start_spy_cam()
333 {{0x13, 0x24, 0x01, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
334 {{0x13, 0x25, 0x01, 0x16, 0x00, 0x00}, 4}, /* width 352 */ in start_spy_cam()
335 {{0x13, 0x26, 0x01, 0x12, 0x00, 0x00}, 4}, /* height 288 */ in start_spy_cam()
336 /* {{0x13, 0x27, 0x01, 0x28, 0x00, 0x00}, 4}, */ in start_spy_cam()
337 {{0x13, 0x27, 0x01, 0x68, 0x00, 0x00}, 4}, in start_spy_cam()
338 {{0x13, 0x28, 0x01, 0x09, 0x00, 0x00}, 4}, /* red gain ?*/ in start_spy_cam()
339 /* {{0x13, 0x28, 0x01, 0x00, 0x00, 0x00}, 4}, */ in start_spy_cam()
340 {{0x13, 0x29, 0x01, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
341 /* {{0x13, 0x29, 0x01, 0x0c, 0x00, 0x00}, 4}, */ in start_spy_cam()
342 {{0x13, 0x2a, 0x01, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
343 {{0x13, 0x2b, 0x01, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
344 /* {{0x13, 0x2c, 0x01, 0x02, 0x00, 0x00}, 4}, */ in start_spy_cam()
345 {{0x13, 0x2c, 0x01, 0x02, 0x00, 0x00}, 4}, in start_spy_cam()
346 {{0x13, 0x2d, 0x01, 0x02, 0x00, 0x00}, 4}, in start_spy_cam()
347 /* {{0x13, 0x2e, 0x01, 0x09, 0x00, 0x00}, 4}, */ in start_spy_cam()
348 {{0x13, 0x2e, 0x01, 0x09, 0x00, 0x00}, 4}, in start_spy_cam()
349 {{0x13, 0x2f, 0x01, 0x07, 0x00, 0x00}, 4}, in start_spy_cam()
350 {{0x12, 0x34, 0x01, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
351 {{0x13, 0x34, 0x01, 0xa1, 0x00, 0x00}, 4}, in start_spy_cam()
352 {{0x13, 0x35, 0x01, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
353 {{0x11, 0x02, 0x06, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
354 {{0x11, 0x03, 0x13, 0x00, 0x00, 0x00}, 4}, /*don't mess with*/ in start_spy_cam()
355 /*{{0x11, 0x04, 0x06, 0x00, 0x00, 0x00}, 4}, observed */ in start_spy_cam()
356 {{0x11, 0x04, 0x00, 0x00, 0x00, 0x00}, 4}, /* brighter */ in start_spy_cam()
357 /*{{0x11, 0x05, 0x65, 0x00, 0x00, 0x00}, 4}, observed */ in start_spy_cam()
358 {{0x11, 0x05, 0x00, 0x00, 0x00, 0x00}, 4}, /* brighter */ in start_spy_cam()
359 {{0x11, 0x06, 0xb1, 0x00, 0x00, 0x00}, 4}, /* observed */ in start_spy_cam()
360 {{0x11, 0x07, 0x00, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
361 /*{{0x11, 0x08, 0x06, 0x00, 0x00, 0x00}, 4}, observed */ in start_spy_cam()
362 {{0x11, 0x08, 0x0b, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
363 {{0x11, 0x09, 0x01, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
364 {{0x11, 0x0a, 0x01, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
365 {{0x11, 0x0b, 0x01, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
366 {{0x11, 0x0c, 0x01, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
367 {{0x11, 0x0d, 0x00, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
368 {{0x11, 0x0e, 0x04, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
369 /* {{0x11, 0x0f, 0x00, 0x00, 0x00, 0x00}, 4}, */ in start_spy_cam()
370 /* brightness or gain. 0 is default. 4 is good in start_spy_cam()
372 {{0x11, 0x0f, 0x04, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
373 {{0x11, 0x10, 0x06, 0x00, 0x00, 0x00}, 4}, /*hstart or hoffs*/ in start_spy_cam()
374 {{0x11, 0x11, 0x06, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
375 {{0x11, 0x12, 0x00, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
376 {{0x11, 0x14, 0x02, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
377 {{0x11, 0x13, 0x01, 0x00, 0x00, 0x00}, 4}, in start_spy_cam()
393 {{0x0c, 0x01, 0x00, 0x00, 0x00, 0x00}, 4}, in start_cif_cam()
395 /* {{0x13, 0x20, 0x01, 0x00, 0x00, 0x00}, 4}, in start_cif_cam()
396 {{0x13, 0x21, 0x01, 0x00, 0x00, 0x00}, 4}, in start_cif_cam()
397 {{0x13, 0x22, 0x01, 0x06, 0x00, 0x00}, 4}, in start_cif_cam()
398 {{0x13, 0x23, 0x01, 0x02, 0x00, 0x00}, 4}, in start_cif_cam()
399 {{0x13, 0x24, 0x01, 0x00, 0x00, 0x00}, 4}, in start_cif_cam()
400 {{0x13, 0x25, 0x01, 0x16, 0x00, 0x00}, 4}, width? in start_cif_cam()
401 {{0x13, 0x26, 0x01, 0x12, 0x00, 0x00}, 4}, height? in start_cif_cam()
402 {{0x13, 0x27, 0x01, 0x68, 0x00, 0x00}, 4}, subsample? in start_cif_cam()
403 {{0x13, 0x28, 0x01, 0x00, 0x00, 0x00}, 4}, in start_cif_cam()
404 {{0x13, 0x29, 0x01, 0x20, 0x00, 0x00}, 4}, in start_cif_cam()
405 {{0x13, 0x2a, 0x01, 0x00, 0x00, 0x00}, 4}, in start_cif_cam()
406 {{0x13, 0x2b, 0x01, 0x00, 0x00, 0x00}, 4}, in start_cif_cam()
407 {{0x13, 0x2c, 0x01, 0x02, 0x00, 0x00}, 4}, in start_cif_cam()
408 {{0x13, 0x2d, 0x01, 0x03, 0x00, 0x00}, 4}, in start_cif_cam()
409 {{0x13, 0x2e, 0x01, 0x0f, 0x00, 0x00}, 4}, in start_cif_cam()
410 {{0x13, 0x2f, 0x01, 0x0c, 0x00, 0x00}, 4}, in start_cif_cam()
411 {{0x12, 0x34, 0x01, 0x00, 0x00, 0x00}, 4}, in start_cif_cam()
412 {{0x13, 0x34, 0x01, 0xa1, 0x00, 0x00}, 4}, in start_cif_cam()
413 {{0x13, 0x35, 0x01, 0x00, 0x00, 0x00}, 4},*/ in start_cif_cam()
438 /* {{0x13, 0x27, 0x01, 0x68, 0x00, 0x00}, 4}, subsample? in start_cif_cam()
439 * {{0x13, 0x28, 0x01, 0x1e, 0x00, 0x00}, 4}, does nothing in start_cif_cam()
440 * {{0x13, 0x27, 0x01, 0x20, 0x00, 0x00}, 4}, */ in start_cif_cam()
441 /* {{0x13, 0x29, 0x01, 0x22, 0x00, 0x00}, 4}, in start_cif_cam()
444 {{0x13, 0x2c, 0x01, 0x02, 0x00, 0x00}, 4}, in start_cif_cam()
445 {{0x13, 0x2d, 0x01, 0x01, 0x00, 0x00}, 4}, in start_cif_cam()
446 {{0x13, 0x2e, 0x01, 0x08, 0x00, 0x00}, 4}, in start_cif_cam()
447 {{0x13, 0x2f, 0x01, 0x06, 0x00, 0x00}, 4}, in start_cif_cam()
448 {{0x13, 0x28, 0x01, 0x00, 0x00, 0x00}, 4}, in start_cif_cam()
453 {{0x12, 0x27, 0x01, 0x00, 0x00, 0x00}, 4}, in start_cif_cam()
470 {{0x0c, 0x01, 0x00, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
471 {{0x16, 0x01, 0x00, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
472 {{0x13, 0x20, 0x01, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
473 {{0x13, 0x21, 0x01, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
474 {{0x13, 0x22, 0x01, 0x04, 0x00, 0x00}, 4}, in start_ms350_cam()
475 {{0x13, 0x23, 0x01, 0x03, 0x00, 0x00}, 4}, in start_ms350_cam()
476 {{0x13, 0x24, 0x01, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
477 {{0x13, 0x25, 0x01, 0x16, 0x00, 0x00}, 4}, in start_ms350_cam()
478 {{0x13, 0x26, 0x01, 0x12, 0x00, 0x00}, 4}, in start_ms350_cam()
479 {{0x13, 0x27, 0x01, 0x28, 0x00, 0x00}, 4}, in start_ms350_cam()
480 {{0x13, 0x28, 0x01, 0x09, 0x00, 0x00}, 4}, in start_ms350_cam()
481 {{0x13, 0x29, 0x01, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
482 {{0x13, 0x2a, 0x01, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
483 {{0x13, 0x2b, 0x01, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
484 {{0x13, 0x2c, 0x01, 0x02, 0x00, 0x00}, 4}, in start_ms350_cam()
485 {{0x13, 0x2d, 0x01, 0x03, 0x00, 0x00}, 4}, in start_ms350_cam()
486 {{0x13, 0x2e, 0x01, 0x0f, 0x00, 0x00}, 4}, in start_ms350_cam()
487 {{0x13, 0x2f, 0x01, 0x0c, 0x00, 0x00}, 4}, in start_ms350_cam()
488 {{0x12, 0x34, 0x01, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
489 {{0x13, 0x34, 0x01, 0xa1, 0x00, 0x00}, 4}, in start_ms350_cam()
490 {{0x13, 0x35, 0x01, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
491 {{0x11, 0x00, 0x01, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
492 {{0x11, 0x01, 0x70, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
493 {{0x11, 0x02, 0x05, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
494 {{0x11, 0x03, 0x5d, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
495 {{0x11, 0x04, 0x07, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
496 {{0x11, 0x05, 0x25, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
497 {{0x11, 0x06, 0x00, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
498 {{0x11, 0x07, 0x09, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
499 {{0x11, 0x08, 0x01, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
500 {{0x11, 0x09, 0x00, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
501 {{0x11, 0x0a, 0x00, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
502 {{0x11, 0x0b, 0x01, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
503 {{0x11, 0x0c, 0x00, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
504 {{0x11, 0x0d, 0x0c, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
505 {{0x11, 0x0e, 0x01, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
506 {{0x11, 0x0f, 0x00, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
507 {{0x11, 0x10, 0x00, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
508 {{0x11, 0x11, 0x00, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
509 {{0x11, 0x12, 0x00, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
510 {{0x11, 0x13, 0x63, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
511 {{0x11, 0x15, 0x70, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
512 {{0x11, 0x18, 0x00, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
513 {{0x11, 0x11, 0x01, 0x00, 0x00, 0x00}, 4}, in start_ms350_cam()
514 {{0x13, 0x25, 0x01, 0x28, 0x00, 0x00}, 4}, /* width */ in start_ms350_cam()
515 {{0x13, 0x26, 0x01, 0x1e, 0x00, 0x00}, 4}, /* height */ in start_ms350_cam()
516 {{0x13, 0x28, 0x01, 0x09, 0x00, 0x00}, 4}, /* vstart? */ in start_ms350_cam()
517 {{0x13, 0x27, 0x01, 0x28, 0x00, 0x00}, 4}, in start_ms350_cam()
518 {{0x13, 0x29, 0x01, 0x40, 0x00, 0x00}, 4}, /* hstart? */ in start_ms350_cam()
519 {{0x13, 0x2c, 0x01, 0x02, 0x00, 0x00}, 4}, in start_ms350_cam()
520 {{0x13, 0x2d, 0x01, 0x03, 0x00, 0x00}, 4}, in start_ms350_cam()
521 {{0x13, 0x2e, 0x01, 0x0f, 0x00, 0x00}, 4}, in start_ms350_cam()
522 {{0x13, 0x2f, 0x01, 0x0c, 0x00, 0x00}, 4}, in start_ms350_cam()
538 {{0x0c, 0x01, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
539 {{0x16, 0x01, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
540 {{0x10, 0x00, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
541 {{0x13, 0x25, 0x01, 0x16, 0x00, 0x00}, 4}, in start_genius_cam()
542 {{0x13, 0x26, 0x01, 0x12, 0x00, 0x00}, 4}, in start_genius_cam()
544 {{0x13, 0x28, 0x01, 0x0e, 0x00, 0x00}, 4}, in start_genius_cam()
545 {{0x13, 0x27, 0x01, 0x20, 0x00, 0x00}, 4}, in start_genius_cam()
546 {{0x13, 0x29, 0x01, 0x22, 0x00, 0x00}, 4}, in start_genius_cam()
547 {{0x13, 0x2c, 0x01, 0x02, 0x00, 0x00}, 4}, in start_genius_cam()
548 {{0x13, 0x2d, 0x01, 0x02, 0x00, 0x00}, 4}, in start_genius_cam()
549 {{0x13, 0x2e, 0x01, 0x09, 0x00, 0x00}, 4}, in start_genius_cam()
550 {{0x13, 0x2f, 0x01, 0x07, 0x00, 0x00}, 4}, in start_genius_cam()
551 {{0x11, 0x20, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
552 {{0x11, 0x21, 0x2d, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
553 {{0x11, 0x22, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
554 {{0x11, 0x23, 0x03, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
555 {{0x11, 0x10, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
556 {{0x11, 0x11, 0x64, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
557 {{0x11, 0x12, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
558 {{0x11, 0x13, 0x91, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
559 {{0x11, 0x14, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
560 {{0x11, 0x15, 0x20, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
561 {{0x11, 0x16, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
562 {{0x11, 0x17, 0x60, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
563 {{0x11, 0x20, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
564 {{0x11, 0x21, 0x2d, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
565 {{0x11, 0x22, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
566 {{0x11, 0x23, 0x03, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
567 {{0x11, 0x25, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
568 {{0x11, 0x26, 0x02, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
569 {{0x11, 0x27, 0x88, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
570 {{0x11, 0x30, 0x38, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
571 {{0x11, 0x31, 0x2a, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
572 {{0x11, 0x32, 0x2a, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
573 {{0x11, 0x33, 0x2a, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
574 {{0x11, 0x34, 0x02, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
575 {{0x11, 0x5b, 0x0a, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
576 {{0x13, 0x25, 0x01, 0x28, 0x00, 0x00}, 4}, /* real width */ in start_genius_cam()
577 {{0x13, 0x26, 0x01, 0x1e, 0x00, 0x00}, 4}, /* real height */ in start_genius_cam()
578 {{0x13, 0x28, 0x01, 0x0e, 0x00, 0x00}, 4}, in start_genius_cam()
579 {{0x13, 0x27, 0x01, 0x20, 0x00, 0x00}, 4}, in start_genius_cam()
580 {{0x13, 0x29, 0x01, 0x62, 0x00, 0x00}, 4}, in start_genius_cam()
581 {{0x13, 0x2c, 0x01, 0x02, 0x00, 0x00}, 4}, in start_genius_cam()
582 {{0x13, 0x2d, 0x01, 0x03, 0x00, 0x00}, 4}, in start_genius_cam()
583 {{0x13, 0x2e, 0x01, 0x0f, 0x00, 0x00}, 4}, in start_genius_cam()
584 {{0x13, 0x2f, 0x01, 0x0c, 0x00, 0x00}, 4}, in start_genius_cam()
585 {{0x11, 0x20, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
586 {{0x11, 0x21, 0x2a, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
587 {{0x11, 0x22, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
588 {{0x11, 0x23, 0x28, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
589 {{0x11, 0x10, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
590 {{0x11, 0x11, 0x04, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
591 {{0x11, 0x12, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
592 {{0x11, 0x13, 0x03, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
593 {{0x11, 0x14, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
594 {{0x11, 0x15, 0xe0, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
595 {{0x11, 0x16, 0x02, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
596 {{0x11, 0x17, 0x80, 0x00, 0x00, 0x00}, 4}, in start_genius_cam()
613 {{0x16, 0x01, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
614 {{0x10, 0x00, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
615 {{0x13, 0x25, 0x01, 0x16, 0x00, 0x00}, 4}, in start_genius_videocam_live()
616 {{0x13, 0x26, 0x01, 0x12, 0x00, 0x00}, 4}, in start_genius_videocam_live()
618 {{0x13, 0x28, 0x01, 0x0e, 0x00, 0x00}, 4}, in start_genius_videocam_live()
619 {{0x13, 0x27, 0x01, 0x20, 0x00, 0x00}, 4}, in start_genius_videocam_live()
620 {{0x13, 0x29, 0x01, 0x22, 0x00, 0x00}, 4}, in start_genius_videocam_live()
621 {{0x13, 0x2c, 0x01, 0x02, 0x00, 0x00}, 4}, in start_genius_videocam_live()
622 {{0x13, 0x2d, 0x01, 0x02, 0x00, 0x00}, 4}, in start_genius_videocam_live()
623 {{0x13, 0x2e, 0x01, 0x09, 0x00, 0x00}, 4}, in start_genius_videocam_live()
624 {{0x13, 0x2f, 0x01, 0x07, 0x00, 0x00}, 4}, in start_genius_videocam_live()
625 {{0x11, 0x20, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
626 {{0x11, 0x21, 0x2d, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
627 {{0x11, 0x22, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
628 {{0x11, 0x23, 0x03, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
629 {{0x11, 0x10, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
630 {{0x11, 0x11, 0x64, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
631 {{0x11, 0x12, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
632 {{0x11, 0x13, 0x91, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
633 {{0x11, 0x14, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
634 {{0x11, 0x15, 0x20, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
635 {{0x11, 0x16, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
636 {{0x11, 0x17, 0x60, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
637 {{0x1c, 0x20, 0x00, 0x2d, 0x00, 0x00}, 4}, in start_genius_videocam_live()
638 {{0x13, 0x20, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
639 {{0x13, 0x21, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
640 {{0x13, 0x22, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
641 {{0x13, 0x23, 0x01, 0x01, 0x00, 0x00}, 4}, in start_genius_videocam_live()
642 {{0x13, 0x24, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
643 {{0x13, 0x25, 0x01, 0x16, 0x00, 0x00}, 4}, in start_genius_videocam_live()
644 {{0x13, 0x26, 0x01, 0x12, 0x00, 0x00}, 4}, in start_genius_videocam_live()
645 {{0x13, 0x27, 0x01, 0x20, 0x00, 0x00}, 4}, in start_genius_videocam_live()
646 {{0x13, 0x28, 0x01, 0x0e, 0x00, 0x00}, 4}, in start_genius_videocam_live()
647 {{0x13, 0x29, 0x01, 0x22, 0x00, 0x00}, 4}, in start_genius_videocam_live()
648 {{0x13, 0x2a, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
649 {{0x13, 0x2b, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
650 {{0x13, 0x2c, 0x01, 0x02, 0x00, 0x00}, 4}, in start_genius_videocam_live()
651 {{0x13, 0x2d, 0x01, 0x02, 0x00, 0x00}, 4}, in start_genius_videocam_live()
652 {{0x13, 0x2e, 0x01, 0x09, 0x00, 0x00}, 4}, in start_genius_videocam_live()
653 {{0x13, 0x2f, 0x01, 0x07, 0x00, 0x00}, 4}, in start_genius_videocam_live()
654 {{0x12, 0x34, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
655 {{0x13, 0x34, 0x01, 0xa1, 0x00, 0x00}, 4}, in start_genius_videocam_live()
656 {{0x13, 0x35, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
657 {{0x11, 0x01, 0x04, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
658 {{0x11, 0x02, 0x92, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
659 {{0x11, 0x10, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
660 {{0x11, 0x11, 0x64, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
661 {{0x11, 0x12, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
662 {{0x11, 0x13, 0x91, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
663 {{0x11, 0x14, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
664 {{0x11, 0x15, 0x20, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
665 {{0x11, 0x16, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
666 {{0x11, 0x17, 0x60, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
667 {{0x11, 0x20, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
668 {{0x11, 0x21, 0x2d, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
669 {{0x11, 0x22, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
670 {{0x11, 0x23, 0x03, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
671 {{0x11, 0x25, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
672 {{0x11, 0x26, 0x02, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
673 {{0x11, 0x27, 0x88, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
674 {{0x11, 0x30, 0x38, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
675 {{0x11, 0x31, 0x2a, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
676 {{0x11, 0x32, 0x2a, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
677 {{0x11, 0x33, 0x2a, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
678 {{0x11, 0x34, 0x02, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
679 {{0x11, 0x5b, 0x0a, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
680 {{0x13, 0x25, 0x01, 0x28, 0x00, 0x00}, 4}, in start_genius_videocam_live()
681 {{0x13, 0x26, 0x01, 0x1e, 0x00, 0x00}, 4}, in start_genius_videocam_live()
682 {{0x13, 0x28, 0x01, 0x0e, 0x00, 0x00}, 4}, in start_genius_videocam_live()
683 {{0x13, 0x27, 0x01, 0x20, 0x00, 0x00}, 4}, in start_genius_videocam_live()
684 {{0x13, 0x29, 0x01, 0x62, 0x00, 0x00}, 4}, in start_genius_videocam_live()
685 {{0x13, 0x2c, 0x01, 0x02, 0x00, 0x00}, 4}, in start_genius_videocam_live()
686 {{0x13, 0x2d, 0x01, 0x03, 0x00, 0x00}, 4}, in start_genius_videocam_live()
687 {{0x13, 0x2e, 0x01, 0x0f, 0x00, 0x00}, 4}, in start_genius_videocam_live()
688 {{0x13, 0x2f, 0x01, 0x0c, 0x00, 0x00}, 4}, in start_genius_videocam_live()
689 {{0x11, 0x20, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
690 {{0x11, 0x21, 0x2a, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
691 {{0x11, 0x22, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
692 {{0x11, 0x23, 0x28, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
693 {{0x11, 0x10, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
694 {{0x11, 0x11, 0x04, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
695 {{0x11, 0x12, 0x00, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
696 {{0x11, 0x13, 0x03, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
697 {{0x11, 0x14, 0x01, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
698 {{0x11, 0x15, 0xe0, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
699 {{0x11, 0x16, 0x02, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
700 {{0x11, 0x17, 0x80, 0x00, 0x00, 0x00}, 4}, in start_genius_videocam_live()
714 if (sd->gain) in start_genius_videocam_live()
715 set_gain(gspca_dev, v4l2_ctrl_g_ctrl(sd->gain)); in start_genius_videocam_live()
723 {{0x0c, 0x01, 0x00, 0x00, 0x00, 0x00}, 4}, in start_vivitar_cam()
724 {{0x13, 0x20, 0x01, 0x00, 0x00, 0x00}, 4}, in start_vivitar_cam()
725 {{0x13, 0x21, 0x01, 0x00, 0x00, 0x00}, 4}, in start_vivitar_cam()
726 {{0x13, 0x22, 0x01, 0x01, 0x00, 0x00}, 4}, in start_vivitar_cam()
727 {{0x13, 0x23, 0x01, 0x01, 0x00, 0x00}, 4}, in start_vivitar_cam()
728 {{0x13, 0x24, 0x01, 0x00, 0x00, 0x00}, 4}, in start_vivitar_cam()
729 {{0x13, 0x25, 0x01, 0x28, 0x00, 0x00}, 4}, in start_vivitar_cam()
730 {{0x13, 0x26, 0x01, 0x1e, 0x00, 0x00}, 4}, in start_vivitar_cam()
731 {{0x13, 0x27, 0x01, 0x20, 0x00, 0x00}, 4}, in start_vivitar_cam()
732 {{0x13, 0x28, 0x01, 0x0a, 0x00, 0x00}, 4}, in start_vivitar_cam()
737 {{0x13, 0x29, 0x01, 0x20, 0x00, 0x00}, 4}, in start_vivitar_cam()
739 {{0x13, 0x2a, 0x01, 0x00, 0x00, 0x00}, 4}, in start_vivitar_cam()
740 {{0x13, 0x2b, 0x01, 0x00, 0x00, 0x00}, 4}, in start_vivitar_cam()
741 {{0x13, 0x2c, 0x01, 0x02, 0x00, 0x00}, 4}, in start_vivitar_cam()
742 {{0x13, 0x2d, 0x01, 0x03, 0x00, 0x00}, 4}, in start_vivitar_cam()
743 {{0x13, 0x2e, 0x01, 0x0f, 0x00, 0x00}, 4}, in start_vivitar_cam()
744 {{0x13, 0x2f, 0x01, 0x0c, 0x00, 0x00}, 4}, in start_vivitar_cam()
746 {{0x12, 0x34, 0x01, 0x00, 0x00, 0x00}, 4}, in start_vivitar_cam()
747 {{0x13, 0x34, 0x01, 0xa1, 0x00, 0x00}, 4}, in start_vivitar_cam()
748 {{0x13, 0x35, 0x01, 0x00, 0x00, 0x00}, 4}, in start_vivitar_cam()
783 /* {{0x13, 0x25, 0x01, 0x28, 0x00, 0x00}, 4}, in start_vivitar_cam()
784 {{0x13, 0x26, 0x01, 0x1e, 0x00, 0x00}, 4}, in start_vivitar_cam()
785 {{0x13, 0x28, 0x01, 0x0b, 0x00, 0x00}, 4}, */ in start_vivitar_cam()
788 {{0x12, 0x27, 0x01, 0x00, 0x00, 0x00}, 4}, in start_vivitar_cam()
793 {{0x12, 0x27, 0x01, 0x00, 0x00, 0x00}, 4}, in start_vivitar_cam()
807 sd->sof_read = 0; in sd_start()
809 switch (sd->model) { in sd_start()
830 return -ENXIO; in sd_start()
833 sd->avg_lum = -1; in sd_start()
857 s32 cur_gain = v4l2_ctrl_g_ctrl(sd->gain); in do_autogain()
859 if (avg_lum == -1) in do_autogain()
863 if (cur_gain == sd->gain->maximum) in do_autogain()
866 v4l2_ctrl_s_ctrl(sd->gain, cur_gain); in do_autogain()
869 if (cur_gain == sd->gain->minimum) in do_autogain()
871 cur_gain--; in do_autogain()
872 v4l2_ctrl_s_ctrl(sd->gain, cur_gain); in do_autogain()
881 if (sd->autogain == NULL || !v4l2_ctrl_g_ctrl(sd->autogain)) in sd_dqcallback()
884 do_autogain(gspca_dev, sd->avg_lum); in sd_dqcallback()
901 n = sof - data; in sd_pkt_scan()
903 n -= sizeof sn9c2028_sof_marker; in sd_pkt_scan()
910 len -= sof - data; in sd_pkt_scan()
916 /* sub-driver description */
928 /* -- module initialisation -- */
937 {USB_DEVICE(0x0c45, 0x8008)}, /* Mini-Shotz ms-350 */
943 /* -- device connect -- */