Lines Matching refs:gspca_dev
38 struct gspca_dev gspca_dev; /* !! must be the first item */ member
288 static void reg_w_val(struct gspca_dev *gspca_dev, __u16 index, __u8 value) in reg_w_val() argument
291 struct usb_device *dev = gspca_dev->dev; in reg_w_val()
302 static void write_vector(struct gspca_dev *gspca_dev, in write_vector() argument
309 reg_w_val(gspca_dev, data[i][1], data[i][0]); in write_vector()
315 static void reg_r(struct gspca_dev *gspca_dev, in reg_r() argument
318 usb_control_msg(gspca_dev->dev, in reg_r()
319 usb_rcvctrlpipe(gspca_dev->dev, 0), in reg_r()
323 index, gspca_dev->usb_buf, length, 500); in reg_r()
327 static void reg_w_buf(struct gspca_dev *gspca_dev, in reg_w_buf() argument
330 usb_control_msg(gspca_dev->dev, in reg_w_buf()
331 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w_buf()
335 index, gspca_dev->usb_buf, len, 500); in reg_w_buf()
338 static void i2c_write(struct gspca_dev *gspca_dev, __u16 value, __u16 reg) in i2c_write() argument
342 reg_w_val(gspca_dev, 0x8801, reg); in i2c_write()
343 reg_w_val(gspca_dev, 0x8805, value); in i2c_write()
344 reg_w_val(gspca_dev, 0x8800, value >> 8); in i2c_write()
346 reg_r(gspca_dev, 0x8803, 1); in i2c_write()
347 if (!gspca_dev->usb_buf[0]) in i2c_write()
353 static int i2c_read(struct gspca_dev *gspca_dev, __u16 reg, __u8 mode) in i2c_read() argument
358 reg_w_val(gspca_dev, 0x8804, 0x92); in i2c_read()
359 reg_w_val(gspca_dev, 0x8801, reg); in i2c_read()
360 reg_w_val(gspca_dev, 0x8802, mode | 0x01); in i2c_read()
362 reg_r(gspca_dev, 0x8803, 1); in i2c_read()
363 if (!gspca_dev->usb_buf[0]) { in i2c_read()
364 reg_r(gspca_dev, 0x8800, 1); in i2c_read()
365 value = gspca_dev->usb_buf[0]; in i2c_read()
366 reg_r(gspca_dev, 0x8805, 1); in i2c_read()
367 return ((int) value << 8) | gspca_dev->usb_buf[0]; in i2c_read()
374 static void sensor_mapwrite(struct gspca_dev *gspca_dev, in sensor_mapwrite() argument
378 gspca_dev->usb_buf[0] = (*sensormap)[1]; in sensor_mapwrite()
379 gspca_dev->usb_buf[1] = (*sensormap)[1] >> 8; in sensor_mapwrite()
380 reg_w_buf(gspca_dev, (*sensormap)[0], 2); in sensor_mapwrite()
385 static void write_sensor_72a(struct gspca_dev *gspca_dev, in write_sensor_72a() argument
389 i2c_write(gspca_dev, (*sensor)[1], (*sensor)[0]); in write_sensor_72a()
394 static void init_161rev12A(struct gspca_dev *gspca_dev) in init_161rev12A() argument
396 write_vector(gspca_dev, spca561_161rev12A_data1); in init_161rev12A()
397 sensor_mapwrite(gspca_dev, Pb100_1map8300); in init_161rev12A()
399 write_vector(gspca_dev, spca561_161rev12A_data2); in init_161rev12A()
400 sensor_mapwrite(gspca_dev, Pb100_2map8300); in init_161rev12A()
404 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
407 struct sd *sd = (struct sd *) gspca_dev; in sd_config()
416 reg_r(gspca_dev, 0x8104, 1); in sd_config()
417 data1 = gspca_dev->usb_buf[0]; in sd_config()
418 reg_r(gspca_dev, 0x8105, 1); in sd_config()
419 data2 = gspca_dev->usb_buf[0]; in sd_config()
421 reg_r(gspca_dev, 0x8106, 1); in sd_config()
422 data1 = gspca_dev->usb_buf[0]; in sd_config()
423 reg_r(gspca_dev, 0x8107, 1); in sd_config()
424 data2 = gspca_dev->usb_buf[0]; in sd_config()
431 cam = &gspca_dev->cam; in sd_config()
447 static int sd_init_12a(struct gspca_dev *gspca_dev) in sd_init_12a() argument
450 init_161rev12A(gspca_dev); in sd_init_12a()
453 static int sd_init_72a(struct gspca_dev *gspca_dev) in sd_init_72a() argument
456 write_vector(gspca_dev, rev72a_reset); in sd_init_72a()
458 write_vector(gspca_dev, rev72a_init_data1); in sd_init_72a()
459 write_sensor_72a(gspca_dev, rev72a_init_sensor1); in sd_init_72a()
460 write_vector(gspca_dev, rev72a_init_data2); in sd_init_72a()
461 write_sensor_72a(gspca_dev, rev72a_init_sensor2); in sd_init_72a()
462 reg_w_val(gspca_dev, 0x8112, 0x30); in sd_init_72a()
466 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) in setbrightness() argument
468 struct sd *sd = (struct sd *) gspca_dev; in setbrightness()
476 reg_w_val(gspca_dev, reg + 0, val); /* R */ in setbrightness()
477 reg_w_val(gspca_dev, reg + 1, val); /* Gr */ in setbrightness()
478 reg_w_val(gspca_dev, reg + 2, val); /* B */ in setbrightness()
479 reg_w_val(gspca_dev, reg + 3, val); /* Gb */ in setbrightness()
482 static void setwhite(struct gspca_dev *gspca_dev, s32 white, s32 contrast) in setwhite() argument
484 struct sd *sd = (struct sd *) gspca_dev; in setwhite()
497 reg_w_val(gspca_dev, 0x8652, contrast + 0x20); /* Gr */ in setwhite()
498 reg_w_val(gspca_dev, 0x8654, contrast + 0x20); /* Gb */ in setwhite()
500 reg_w_val(gspca_dev, reg, red); in setwhite()
501 reg_w_val(gspca_dev, reg + 2, blue); in setwhite()
505 static void setexposure(struct gspca_dev *gspca_dev, s32 val) in setexposure() argument
537 gspca_dev->usb_buf[0] = expo; in setexposure()
538 gspca_dev->usb_buf[1] = expo >> 8; in setexposure()
539 reg_w_buf(gspca_dev, 0x8309, 2); in setexposure()
543 static void setgain(struct gspca_dev *gspca_dev, s32 val) in setgain() argument
549 gspca_dev->usb_buf[0] = val; in setgain()
551 gspca_dev->usb_buf[0] = (val / 2) | 0x40; in setgain()
553 gspca_dev->usb_buf[0] = (val / 4) | 0xc0; in setgain()
555 gspca_dev->usb_buf[1] = 0; in setgain()
556 reg_w_buf(gspca_dev, 0x8335, 2); in setgain()
559 static void setautogain(struct gspca_dev *gspca_dev, s32 val) in setautogain() argument
561 struct sd *sd = (struct sd *) gspca_dev; in setautogain()
569 static int sd_start_12a(struct gspca_dev *gspca_dev) in sd_start_12a() argument
575 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; in sd_start_12a()
578 reg_w_val(gspca_dev, 0x8500, 0x10 | mode); in sd_start_12a()
583 reg_w_val(gspca_dev, 0x8500, mode); in sd_start_12a()
586 gspca_dev->usb_buf[0] = 0xaa; in sd_start_12a()
587 gspca_dev->usb_buf[1] = 0x00; in sd_start_12a()
588 reg_w_buf(gspca_dev, 0x8307, 2); in sd_start_12a()
590 reg_w_val(gspca_dev, 0x8700, 0x8a); in sd_start_12a()
592 reg_w_val(gspca_dev, 0x8112, 0x1e | 0x20); in sd_start_12a()
593 reg_w_val(gspca_dev, 0x850b, 0x03); in sd_start_12a()
594 memcpy(gspca_dev->usb_buf, Reg8391, 8); in sd_start_12a()
595 reg_w_buf(gspca_dev, 0x8391, 8); in sd_start_12a()
596 reg_w_buf(gspca_dev, 0x8390, 8); in sd_start_12a()
599 reg_w_val(gspca_dev, 0x8114, 0x00); in sd_start_12a()
602 static int sd_start_72a(struct gspca_dev *gspca_dev) in sd_start_72a() argument
604 struct sd *sd = (struct sd *) gspca_dev; in sd_start_72a()
608 write_vector(gspca_dev, rev72a_reset); in sd_start_72a()
610 write_vector(gspca_dev, rev72a_init_data1); in sd_start_72a()
611 write_sensor_72a(gspca_dev, rev72a_init_sensor1); in sd_start_72a()
613 mode = gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv; in sd_start_72a()
629 reg_w_val(gspca_dev, 0x8700, Clck); /* 0x27 clock */ in sd_start_72a()
630 reg_w_val(gspca_dev, 0x8702, 0x81); in sd_start_72a()
631 reg_w_val(gspca_dev, 0x8500, mode); /* mode */ in sd_start_72a()
632 write_sensor_72a(gspca_dev, rev72a_init_sensor2); in sd_start_72a()
633 setwhite(gspca_dev, v4l2_ctrl_g_ctrl(sd->hue), in sd_start_72a()
636 setautogain(gspca_dev, v4l2_ctrl_g_ctrl(sd->autogain)); in sd_start_72a()
637 reg_w_val(gspca_dev, 0x8112, 0x10 | 0x20); in sd_start_72a()
641 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
643 struct sd *sd = (struct sd *) gspca_dev; in sd_stopN()
646 reg_w_val(gspca_dev, 0x8112, 0x0e); in sd_stopN()
648 reg_w_val(gspca_dev, 0x8114, 0x08); in sd_stopN()
650 reg_w_val(gspca_dev, 0x8112, 0x20); in sd_stopN()
655 static void do_autogain(struct gspca_dev *gspca_dev) in do_autogain() argument
657 struct sd *sd = (struct sd *) gspca_dev; in do_autogain()
675 reg_r(gspca_dev, 0x8621, 1); in do_autogain()
676 Gr = gspca_dev->usb_buf[0]; in do_autogain()
677 reg_r(gspca_dev, 0x8622, 1); in do_autogain()
678 R = gspca_dev->usb_buf[0]; in do_autogain()
679 reg_r(gspca_dev, 0x8623, 1); in do_autogain()
680 B = gspca_dev->usb_buf[0]; in do_autogain()
681 reg_r(gspca_dev, 0x8624, 1); in do_autogain()
682 Gb = gspca_dev->usb_buf[0]; in do_autogain()
690 expotimes = i2c_read(gspca_dev, 0x09, 0x10); in do_autogain()
696 gainG = i2c_read(gspca_dev, 0x35, 0x10); in do_autogain()
710 i2c_write(gspca_dev, gainG, 0x35); in do_autogain()
716 i2c_write(gspca_dev, expotimes | pixelclk, 0x09); in do_autogain()
722 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
726 struct sd *sd = (struct sd *) gspca_dev; in sd_pkt_scan()
731 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); in sd_pkt_scan()
736 gspca_dev->last_packet_type = DISCARD_PACKET; in sd_pkt_scan()
742 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); in sd_pkt_scan()
743 input_sync(gspca_dev->input_dev); in sd_pkt_scan()
744 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); in sd_pkt_scan()
745 input_sync(gspca_dev->input_dev); in sd_pkt_scan()
751 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); in sd_pkt_scan()
761 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); in sd_pkt_scan()
767 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()
772 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
773 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
774 struct sd *sd = (struct sd *)gspca_dev; in sd_s_ctrl()
776 gspca_dev->usb_err = 0; in sd_s_ctrl()
778 if (!gspca_dev->streaming) in sd_s_ctrl()
783 setbrightness(gspca_dev, ctrl->val); in sd_s_ctrl()
787 setwhite(gspca_dev, sd->hue->val, ctrl->val); in sd_s_ctrl()
791 setwhite(gspca_dev, ctrl->val, 0); in sd_s_ctrl()
794 setexposure(gspca_dev, ctrl->val); in sd_s_ctrl()
797 setgain(gspca_dev, ctrl->val); in sd_s_ctrl()
800 setautogain(gspca_dev, ctrl->val); in sd_s_ctrl()
803 return gspca_dev->usb_err; in sd_s_ctrl()
810 static int sd_init_controls_12a(struct gspca_dev *gspca_dev) in sd_init_controls_12a() argument
812 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls_12a()
814 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls_12a()
832 static int sd_init_controls_72a(struct gspca_dev *gspca_dev) in sd_init_controls_72a() argument
834 struct sd *sd = (struct sd *)gspca_dev; in sd_init_controls_72a()
835 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls_72a()
837 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls_72a()