Lines Matching refs:gspca_dev

25 	struct gspca_dev gspca_dev;	/* !! must be the first item */
275 static void reg_w_val(struct gspca_dev *gspca_dev, __u16 index, __u8 value)
278 struct usb_device *dev = gspca_dev->dev;
284 gspca_dbg(gspca_dev, D_USBO, "reg write: 0x%02x:0x%02x\n",
290 static void write_vector(struct gspca_dev *gspca_dev,
297 reg_w_val(gspca_dev, data[i][1], data[i][0]);
302 /* read 'len' bytes to gspca_dev->usb_buf */
303 static void reg_r(struct gspca_dev *gspca_dev,
306 usb_control_msg(gspca_dev->dev,
307 usb_rcvctrlpipe(gspca_dev->dev, 0),
311 index, gspca_dev->usb_buf, length, 500);
314 /* write 'len' bytes from gspca_dev->usb_buf */
315 static void reg_w_buf(struct gspca_dev *gspca_dev,
318 usb_control_msg(gspca_dev->dev,
319 usb_sndctrlpipe(gspca_dev->dev, 0),
323 index, gspca_dev->usb_buf, len, 500);
326 static void i2c_write(struct gspca_dev *gspca_dev, __u16 value, __u16 reg)
330 reg_w_val(gspca_dev, 0x8801, reg);
331 reg_w_val(gspca_dev, 0x8805, value);
332 reg_w_val(gspca_dev, 0x8800, value >> 8);
334 reg_r(gspca_dev, 0x8803, 1);
335 if (!gspca_dev->usb_buf[0])
341 static int i2c_read(struct gspca_dev *gspca_dev, __u16 reg, __u8 mode)
346 reg_w_val(gspca_dev, 0x8804, 0x92);
347 reg_w_val(gspca_dev, 0x8801, reg);
348 reg_w_val(gspca_dev, 0x8802, mode | 0x01);
350 reg_r(gspca_dev, 0x8803, 1);
351 if (!gspca_dev->usb_buf[0]) {
352 reg_r(gspca_dev, 0x8800, 1);
353 value = gspca_dev->usb_buf[0];
354 reg_r(gspca_dev, 0x8805, 1);
355 return ((int) value << 8) | gspca_dev->usb_buf[0];
362 static void sensor_mapwrite(struct gspca_dev *gspca_dev,
366 gspca_dev->usb_buf[0] = (*sensormap)[1];
367 gspca_dev->usb_buf[1] = (*sensormap)[1] >> 8;
368 reg_w_buf(gspca_dev, (*sensormap)[0], 2);
373 static void write_sensor_72a(struct gspca_dev *gspca_dev,
377 i2c_write(gspca_dev, (*sensor)[1], (*sensor)[0]);
382 static void init_161rev12A(struct gspca_dev *gspca_dev)
384 write_vector(gspca_dev, spca561_161rev12A_data1);
385 sensor_mapwrite(gspca_dev, Pb100_1map8300);
387 write_vector(gspca_dev, spca561_161rev12A_data2);
388 sensor_mapwrite(gspca_dev, Pb100_2map8300);
392 static int sd_config(struct gspca_dev *gspca_dev,
395 struct sd *sd = (struct sd *) gspca_dev;
404 reg_r(gspca_dev, 0x8104, 1);
405 data1 = gspca_dev->usb_buf[0];
406 reg_r(gspca_dev, 0x8105, 1);
407 data2 = gspca_dev->usb_buf[0];
409 reg_r(gspca_dev, 0x8106, 1);
410 data1 = gspca_dev->usb_buf[0];
411 reg_r(gspca_dev, 0x8107, 1);
412 data2 = gspca_dev->usb_buf[0];
415 gspca_dbg(gspca_dev, D_PROBE, "Bad vendor / product from device\n");
419 cam = &gspca_dev->cam;
435 static int sd_init_12a(struct gspca_dev *gspca_dev)
437 gspca_dbg(gspca_dev, D_STREAM, "Chip revision: 012a\n");
438 init_161rev12A(gspca_dev);
441 static int sd_init_72a(struct gspca_dev *gspca_dev)
443 gspca_dbg(gspca_dev, D_STREAM, "Chip revision: 072a\n");
444 write_vector(gspca_dev, rev72a_reset);
446 write_vector(gspca_dev, rev72a_init_data1);
447 write_sensor_72a(gspca_dev, rev72a_init_sensor1);
448 write_vector(gspca_dev, rev72a_init_data2);
449 write_sensor_72a(gspca_dev, rev72a_init_sensor2);
450 reg_w_val(gspca_dev, 0x8112, 0x30);
454 static void setbrightness(struct gspca_dev *gspca_dev, s32 val)
456 struct sd *sd = (struct sd *) gspca_dev;
464 reg_w_val(gspca_dev, reg + 0, val); /* R */
465 reg_w_val(gspca_dev, reg + 1, val); /* Gr */
466 reg_w_val(gspca_dev, reg + 2, val); /* B */
467 reg_w_val(gspca_dev, reg + 3, val); /* Gb */
470 static void setwhite(struct gspca_dev *gspca_dev, s32 white, s32 contrast)
472 struct sd *sd = (struct sd *) gspca_dev;
485 reg_w_val(gspca_dev, 0x8652, contrast + 0x20); /* Gr */
486 reg_w_val(gspca_dev, 0x8654, contrast + 0x20); /* Gb */
488 reg_w_val(gspca_dev, reg, red);
489 reg_w_val(gspca_dev, reg + 2, blue);
493 static void setexposure(struct gspca_dev *gspca_dev, s32 val)
525 gspca_dev->usb_buf[0] = expo;
526 gspca_dev->usb_buf[1] = expo >> 8;
527 reg_w_buf(gspca_dev, 0x8309, 2);
531 static void setgain(struct gspca_dev *gspca_dev, s32 val)
537 gspca_dev->usb_buf[0] = val;
539 gspca_dev->usb_buf[0] = (val / 2) | 0x40;
541 gspca_dev->usb_buf[0] = (val / 4) | 0xc0;
543 gspca_dev->usb_buf[1] = 0;
544 reg_w_buf(gspca_dev, 0x8335, 2);
547 static void setautogain(struct gspca_dev *gspca_dev, s32 val)
549 struct sd *sd = (struct sd *) gspca_dev;
557 static int sd_start_12a(struct gspca_dev *gspca_dev)
563 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv;
566 reg_w_val(gspca_dev, 0x8500, 0x10 | mode);
571 reg_w_val(gspca_dev, 0x8500, mode);
574 gspca_dev->usb_buf[0] = 0xaa;
575 gspca_dev->usb_buf[1] = 0x00;
576 reg_w_buf(gspca_dev, 0x8307, 2);
578 reg_w_val(gspca_dev, 0x8700, 0x8a);
580 reg_w_val(gspca_dev, 0x8112, 0x1e | 0x20);
581 reg_w_val(gspca_dev, 0x850b, 0x03);
582 memcpy(gspca_dev->usb_buf, Reg8391, 8);
583 reg_w_buf(gspca_dev, 0x8391, 8);
584 reg_w_buf(gspca_dev, 0x8390, 8);
587 reg_w_val(gspca_dev, 0x8114, 0x00);
590 static int sd_start_72a(struct gspca_dev *gspca_dev)
592 struct sd *sd = (struct sd *) gspca_dev;
596 write_vector(gspca_dev, rev72a_reset);
598 write_vector(gspca_dev, rev72a_init_data1);
599 write_sensor_72a(gspca_dev, rev72a_init_sensor1);
601 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv;
617 reg_w_val(gspca_dev, 0x8700, Clck); /* 0x27 clock */
618 reg_w_val(gspca_dev, 0x8702, 0x81);
619 reg_w_val(gspca_dev, 0x8500, mode); /* mode */
620 write_sensor_72a(gspca_dev, rev72a_init_sensor2);
621 setwhite(gspca_dev, v4l2_ctrl_g_ctrl(sd->hue),
623 /* setbrightness(gspca_dev); * fixme: bad values */
624 setautogain(gspca_dev, v4l2_ctrl_g_ctrl(sd->autogain));
625 reg_w_val(gspca_dev, 0x8112, 0x10 | 0x20);
629 static void sd_stopN(struct gspca_dev *gspca_dev)
631 struct sd *sd = (struct sd *) gspca_dev;
634 reg_w_val(gspca_dev, 0x8112, 0x0e);
636 reg_w_val(gspca_dev, 0x8114, 0x08);
638 reg_w_val(gspca_dev, 0x8112, 0x20);
639 /* reg_w_val(gspca_dev, 0x8102, 0x00); ?? */
643 static void do_autogain(struct gspca_dev *gspca_dev)
645 struct sd *sd = (struct sd *) gspca_dev;
663 reg_r(gspca_dev, 0x8621, 1);
664 Gr = gspca_dev->usb_buf[0];
665 reg_r(gspca_dev, 0x8622, 1);
666 R = gspca_dev->usb_buf[0];
667 reg_r(gspca_dev, 0x8623, 1);
668 B = gspca_dev->usb_buf[0];
669 reg_r(gspca_dev, 0x8624, 1);
670 Gb = gspca_dev->usb_buf[0];
677 expotimes = i2c_read(gspca_dev, 0x09, 0x10);
680 gainG = i2c_read(gspca_dev, 0x35, 0x10);
689 i2c_write(gspca_dev, gainG, 0x35);
695 i2c_write(gspca_dev, expotimes | pixelclk, 0x09);
701 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
705 struct sd *sd = (struct sd *) gspca_dev;
710 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
714 gspca_err(gspca_dev, "Short SOF packet, ignoring\n\n\n\n\n");
715 gspca_dev->last_packet_type = DISCARD_PACKET;
721 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1);
722 input_sync(gspca_dev->input_dev);
723 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0);
724 input_sync(gspca_dev->input_dev);
730 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
740 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
746 gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
751 struct gspca_dev *gspca_dev =
752 container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
753 struct sd *sd = (struct sd *)gspca_dev;
755 gspca_dev->usb_err = 0;
757 if (!gspca_dev->streaming)
762 setbrightness(gspca_dev, ctrl->val);
766 setwhite(gspca_dev, sd->hue->val, ctrl->val);
770 setwhite(gspca_dev, ctrl->val, 0);
773 setexposure(gspca_dev, ctrl->val);
776 setgain(gspca_dev, ctrl->val);
779 setautogain(gspca_dev, ctrl->val);
782 return gspca_dev->usb_err;
789 static int sd_init_controls_12a(struct gspca_dev *gspca_dev)
791 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
793 gspca_dev->vdev.ctrl_handler = hdl;
811 static int sd_init_controls_72a(struct gspca_dev *gspca_dev)
813 struct sd *sd = (struct sd *)gspca_dev;
814 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
816 gspca_dev->vdev.ctrl_handler = hdl;