Lines Matching refs:gspca_dev

87 	struct gspca_dev gspca_dev;  /* !! must be the first item */  member
106 static void sd_stopN(struct gspca_dev *gspca_dev);
137 static int mr_write(struct gspca_dev *gspca_dev, int len) in mr_write() argument
141 rc = usb_bulk_msg(gspca_dev->dev, in mr_write()
142 usb_sndbulkpipe(gspca_dev->dev, 4), in mr_write()
143 gspca_dev->usb_buf, len, NULL, 500); in mr_write()
146 gspca_dev->usb_buf[0], rc); in mr_write()
151 static int mr_read(struct gspca_dev *gspca_dev, int len) in mr_read() argument
155 rc = usb_bulk_msg(gspca_dev->dev, in mr_read()
156 usb_rcvbulkpipe(gspca_dev->dev, 3), in mr_read()
157 gspca_dev->usb_buf, len, NULL, 500); in mr_read()
160 gspca_dev->usb_buf[0], rc); in mr_read()
164 static int sensor_write_reg(struct gspca_dev *gspca_dev, u8 reg, u8 flags, in sensor_write_reg() argument
167 gspca_dev->usb_buf[0] = 0x1f; in sensor_write_reg()
168 gspca_dev->usb_buf[1] = flags; in sensor_write_reg()
169 gspca_dev->usb_buf[2] = reg; in sensor_write_reg()
170 memcpy(gspca_dev->usb_buf + 3, data, len); in sensor_write_reg()
172 return mr_write(gspca_dev, len + 3); in sensor_write_reg()
175 static int sensor_write_regs(struct gspca_dev *gspca_dev, in sensor_write_regs() argument
181 rc = sensor_write_reg(gspca_dev, data[i].reg, data[i].flags, in sensor_write_regs()
190 static int sensor_write1(struct gspca_dev *gspca_dev, u8 reg, u8 data) in sensor_write1() argument
192 struct sd *sd = (struct sd *) gspca_dev; in sensor_write1()
198 rc = sensor_write_reg(gspca_dev, reg, 0x01, &buf, 1); in sensor_write1()
201 rc = sensor_write_reg(gspca_dev, reg, 0x00, &buf, 1); in sensor_write1()
208 rc = sensor_write_reg(gspca_dev, confirm_reg, 0x00, &buf, 1); in sensor_write1()
215 static int cam_get_response16(struct gspca_dev *gspca_dev, u8 reg, int verbose) in cam_get_response16() argument
219 gspca_dev->usb_buf[0] = reg; in cam_get_response16()
220 err_code = mr_write(gspca_dev, 1); in cam_get_response16()
224 err_code = mr_read(gspca_dev, 16); in cam_get_response16()
230 gspca_dev->usb_buf[0], in cam_get_response16()
231 gspca_dev->usb_buf[1], in cam_get_response16()
232 gspca_dev->usb_buf[2]); in cam_get_response16()
237 static int zero_the_pointer(struct gspca_dev *gspca_dev) in zero_the_pointer() argument
239 __u8 *data = gspca_dev->usb_buf; in zero_the_pointer()
244 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
250 err_code = mr_write(gspca_dev, 2); in zero_the_pointer()
254 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
260 err_code = mr_write(gspca_dev, 2); in zero_the_pointer()
264 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
270 err_code = mr_write(gspca_dev, 2); in zero_the_pointer()
274 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
280 err_code = mr_write(gspca_dev, 2); in zero_the_pointer()
285 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
298 err_code = mr_write(gspca_dev, 2); in zero_the_pointer()
302 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
310 err_code = mr_write(gspca_dev, 1); in zero_the_pointer()
314 err_code = mr_read(gspca_dev, 16); in zero_the_pointer()
321 static int stream_start(struct gspca_dev *gspca_dev) in stream_start() argument
323 gspca_dev->usb_buf[0] = 0x01; in stream_start()
324 gspca_dev->usb_buf[1] = 0x01; in stream_start()
325 return mr_write(gspca_dev, 2); in stream_start()
328 static void stream_stop(struct gspca_dev *gspca_dev) in stream_stop() argument
330 gspca_dev->usb_buf[0] = 0x01; in stream_stop()
331 gspca_dev->usb_buf[1] = 0x00; in stream_stop()
332 if (mr_write(gspca_dev, 2) < 0) in stream_stop()
336 static void lcd_stop(struct gspca_dev *gspca_dev) in lcd_stop() argument
338 gspca_dev->usb_buf[0] = 0x19; in lcd_stop()
339 gspca_dev->usb_buf[1] = 0x54; in lcd_stop()
340 if (mr_write(gspca_dev, 2) < 0) in lcd_stop()
344 static int isoc_enable(struct gspca_dev *gspca_dev) in isoc_enable() argument
346 gspca_dev->usb_buf[0] = 0x00; in isoc_enable()
347 gspca_dev->usb_buf[1] = 0x4d; /* ISOC transferring enable... */ in isoc_enable()
348 return mr_write(gspca_dev, 2); in isoc_enable()
352 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
355 struct sd *sd = (struct sd *) gspca_dev; in sd_config()
359 cam = &gspca_dev->cam; in sd_config()
372 err_code = zero_the_pointer(gspca_dev); in sd_config()
376 err_code = stream_start(gspca_dev); in sd_config()
381 err_code = cam_get_response16(gspca_dev, 0x07, 1); in sd_config()
409 switch (gspca_dev->usb_buf[0]) { in sd_config()
418 gspca_dev->usb_buf[1]); in sd_config()
448 if (gspca_dev->usb_buf[0] == 0x01) { in sd_config()
450 } else if ((gspca_dev->usb_buf[0] != 0x03) && in sd_config()
451 (gspca_dev->usb_buf[0] != 0x04)) { in sd_config()
453 gspca_dev->usb_buf[0]); in sd_config()
458 if ((gspca_dev->usb_buf[0] == 0x03) && in sd_config()
459 (gspca_dev->usb_buf[1] == 0x50)) in sd_config()
461 if (gspca_dev->usb_buf[0] == 0x04) { in sd_config()
463 switch (gspca_dev->usb_buf[1]) { in sd_config()
473 gspca_dev->usb_buf[1]); in sd_config()
482 sd_stopN(gspca_dev); in sd_config()
494 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
499 static int start_cif_cam(struct gspca_dev *gspca_dev) in start_cif_cam() argument
501 struct sd *sd = (struct sd *) gspca_dev; in start_cif_cam()
502 __u8 *data = gspca_dev->usb_buf; in start_cif_cam()
524 switch (gspca_dev->pixfmt.width) { in start_cif_cam()
545 err_code = mr_write(gspca_dev, 11); in start_cif_cam()
568 err_code = sensor_write_regs(gspca_dev, cif_sensor0_init_data, in start_cif_cam()
590 gspca_dev->usb_buf[0] = 0x0a; in start_cif_cam()
591 gspca_dev->usb_buf[1] = 0x00; in start_cif_cam()
592 err_code = mr_write(gspca_dev, 2); in start_cif_cam()
595 err_code = sensor_write_regs(gspca_dev, cif_sensor1_init_data, in start_cif_cam()
601 static int start_vga_cam(struct gspca_dev *gspca_dev) in start_vga_cam() argument
603 struct sd *sd = (struct sd *) gspca_dev; in start_vga_cam()
604 __u8 *data = gspca_dev->usb_buf; in start_vga_cam()
621 switch (gspca_dev->pixfmt.width) { in start_vga_cam()
655 err_code = mr_write(gspca_dev, 11); in start_vga_cam()
668 err_code = sensor_write_regs(gspca_dev, vga_sensor0_init_data, in start_vga_cam()
697 err_code = sensor_write_regs(gspca_dev, color_adj, in start_vga_cam()
700 err_code = sensor_write_regs(gspca_dev, color_no_adj, in start_vga_cam()
706 err_code = sensor_write_regs(gspca_dev, vga_sensor1_init_data, in start_vga_cam()
748 err_code = sensor_write_regs(gspca_dev, vga_sensor2_init_data, in start_vga_cam()
754 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
756 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
765 err_code = zero_the_pointer(gspca_dev); in sd_start()
769 err_code = stream_start(gspca_dev); in sd_start()
774 err_code = start_cif_cam(gspca_dev); in sd_start()
776 err_code = start_vga_cam(gspca_dev); in sd_start()
781 return isoc_enable(gspca_dev); in sd_start()
784 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
786 struct sd *sd = (struct sd *) gspca_dev; in sd_stopN()
788 stream_stop(gspca_dev); in sd_stopN()
790 zero_the_pointer(gspca_dev); in sd_stopN()
792 lcd_stop(gspca_dev); in sd_stopN()
795 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) in setbrightness() argument
797 struct sd *sd = (struct sd *) gspca_dev; in setbrightness()
810 sensor_write1(gspca_dev, sign_reg, 0x00); in setbrightness()
812 sensor_write1(gspca_dev, sign_reg, 0x01); in setbrightness()
819 sensor_write1(gspca_dev, value_reg, val); in setbrightness()
822 static void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 min_clockdiv) in setexposure() argument
824 struct sd *sd = (struct sd *) gspca_dev; in setexposure()
832 sensor_write1(gspca_dev, 3, exposure >> 4); in setexposure()
833 sensor_write1(gspca_dev, 4, exposure & 0x0f); in setexposure()
837 sensor_write1(gspca_dev, 3, exposure >> 8); in setexposure()
838 sensor_write1(gspca_dev, 4, exposure & 0xff); in setexposure()
850 if (clockdiv < min_clockdiv && gspca_dev->pixfmt.width >= 320) in setexposure()
869 sensor_write_reg(gspca_dev, 0x0e, 0, buf, 2); in setexposure()
870 sensor_write1(gspca_dev, 0x02, clockdiv); in setexposure()
874 static void setgain(struct gspca_dev *gspca_dev, s32 val) in setgain() argument
876 struct sd *sd = (struct sd *) gspca_dev; in setgain()
880 sensor_write1(gspca_dev, 0x0e, val); in setgain()
883 sensor_write1(gspca_dev, gainreg, val >> 8); in setgain()
884 sensor_write1(gspca_dev, gainreg + 1, val & 0xff); in setgain()
887 sensor_write1(gspca_dev, 0x10, val); in setgain()
890 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) in setcontrast() argument
892 sensor_write1(gspca_dev, 0x1c, val); in setcontrast()
897 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
898 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
899 struct sd *sd = (struct sd *)gspca_dev; in sd_s_ctrl()
901 gspca_dev->usb_err = 0; in sd_s_ctrl()
903 if (!gspca_dev->streaming) in sd_s_ctrl()
908 setbrightness(gspca_dev, ctrl->val); in sd_s_ctrl()
911 setcontrast(gspca_dev, ctrl->val); in sd_s_ctrl()
914 setexposure(gspca_dev, sd->exposure->val, in sd_s_ctrl()
918 setgain(gspca_dev, ctrl->val); in sd_s_ctrl()
921 return gspca_dev->usb_err; in sd_s_ctrl()
928 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
930 struct sd *sd = (struct sd *)gspca_dev; in sd_init_controls()
931 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
950 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()
1022 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
1026 struct sd *sd = (struct sd *) gspca_dev; in sd_pkt_scan()
1029 sof = pac_find_sof(gspca_dev, &sd->sof_read, data, len); in sd_pkt_scan()
1039 gspca_frame_add(gspca_dev, LAST_PACKET, in sd_pkt_scan()
1042 gspca_frame_add(gspca_dev, FIRST_PACKET, in sd_pkt_scan()
1047 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()