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