Lines Matching refs:gspca_dev

73 	struct gspca_dev gspca_dev;  /* !! must be the first item */  member
92 static void sd_stopN(struct gspca_dev *gspca_dev);
123 static int mr_write(struct gspca_dev *gspca_dev, int len) in mr_write() argument
127 rc = usb_bulk_msg(gspca_dev->dev, in mr_write()
128 usb_sndbulkpipe(gspca_dev->dev, 4), in mr_write()
129 gspca_dev->usb_buf, len, NULL, 500); in mr_write()
132 gspca_dev->usb_buf[0], rc); in mr_write()
137 static int mr_read(struct gspca_dev *gspca_dev, int len) in mr_read() argument
141 rc = usb_bulk_msg(gspca_dev->dev, in mr_read()
142 usb_rcvbulkpipe(gspca_dev->dev, 3), in mr_read()
143 gspca_dev->usb_buf, len, NULL, 500); in mr_read()
146 gspca_dev->usb_buf[0], rc); in mr_read()
150 static int sensor_write_reg(struct gspca_dev *gspca_dev, u8 reg, u8 flags, in sensor_write_reg() argument
153 gspca_dev->usb_buf[0] = 0x1f; in sensor_write_reg()
154 gspca_dev->usb_buf[1] = flags; in sensor_write_reg()
155 gspca_dev->usb_buf[2] = reg; in sensor_write_reg()
156 memcpy(gspca_dev->usb_buf + 3, data, len); in sensor_write_reg()
158 return mr_write(gspca_dev, len + 3); in sensor_write_reg()
161 static int sensor_write_regs(struct gspca_dev *gspca_dev, in sensor_write_regs() argument
167 rc = sensor_write_reg(gspca_dev, data[i].reg, data[i].flags, in sensor_write_regs()
176 static int sensor_write1(struct gspca_dev *gspca_dev, u8 reg, u8 data) in sensor_write1() argument
178 struct sd *sd = (struct sd *) gspca_dev; in sensor_write1()
184 rc = sensor_write_reg(gspca_dev, reg, 0x01, &buf, 1); in sensor_write1()
187 rc = sensor_write_reg(gspca_dev, reg, 0x00, &buf, 1); in sensor_write1()
194 rc = sensor_write_reg(gspca_dev, confirm_reg, 0x00, &buf, 1); in sensor_write1()
201 static int cam_get_response16(struct gspca_dev *gspca_dev, u8 reg, int verbose) in cam_get_response16() argument
205 gspca_dev->usb_buf[0] = reg; in cam_get_response16()
206 err_code = mr_write(gspca_dev, 1); in cam_get_response16()
210 err_code = mr_read(gspca_dev, 16); in cam_get_response16()
215 gspca_dbg(gspca_dev, D_PROBE, "Register: %02x reads %02x%02x%02x\n", in cam_get_response16()
217 gspca_dev->usb_buf[0], in cam_get_response16()
218 gspca_dev->usb_buf[1], in cam_get_response16()
219 gspca_dev->usb_buf[2]); in cam_get_response16()
224 static int zero_the_pointer(struct gspca_dev *gspca_dev) in zero_the_pointer() argument
226 __u8 *data = gspca_dev->usb_buf; in zero_the_pointer()
231 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
237 err_code = mr_write(gspca_dev, 2); in zero_the_pointer()
241 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
247 err_code = mr_write(gspca_dev, 2); in zero_the_pointer()
251 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
257 err_code = mr_write(gspca_dev, 2); in zero_the_pointer()
261 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
267 err_code = mr_write(gspca_dev, 2); in zero_the_pointer()
272 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
279 gspca_err(gspca_dev, "status is %02x\n", status); in zero_the_pointer()
285 err_code = mr_write(gspca_dev, 2); in zero_the_pointer()
289 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
297 err_code = mr_write(gspca_dev, 1); in zero_the_pointer()
301 err_code = mr_read(gspca_dev, 16); in zero_the_pointer()
308 static int stream_start(struct gspca_dev *gspca_dev) in stream_start() argument
310 gspca_dev->usb_buf[0] = 0x01; in stream_start()
311 gspca_dev->usb_buf[1] = 0x01; in stream_start()
312 return mr_write(gspca_dev, 2); in stream_start()
315 static void stream_stop(struct gspca_dev *gspca_dev) in stream_stop() argument
317 gspca_dev->usb_buf[0] = 0x01; in stream_stop()
318 gspca_dev->usb_buf[1] = 0x00; in stream_stop()
319 if (mr_write(gspca_dev, 2) < 0) in stream_stop()
320 gspca_err(gspca_dev, "Stream Stop failed\n"); in stream_stop()
323 static void lcd_stop(struct gspca_dev *gspca_dev) in lcd_stop() argument
325 gspca_dev->usb_buf[0] = 0x19; in lcd_stop()
326 gspca_dev->usb_buf[1] = 0x54; in lcd_stop()
327 if (mr_write(gspca_dev, 2) < 0) in lcd_stop()
328 gspca_err(gspca_dev, "LCD Stop failed\n"); in lcd_stop()
331 static int isoc_enable(struct gspca_dev *gspca_dev) in isoc_enable() argument
333 gspca_dev->usb_buf[0] = 0x00; in isoc_enable()
334 gspca_dev->usb_buf[1] = 0x4d; /* ISOC transferring enable... */ in isoc_enable()
335 return mr_write(gspca_dev, 2); in isoc_enable()
339 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
342 struct sd *sd = (struct sd *) gspca_dev; in sd_config()
346 cam = &gspca_dev->cam; in sd_config()
359 err_code = zero_the_pointer(gspca_dev); in sd_config()
363 err_code = stream_start(gspca_dev); in sd_config()
368 err_code = cam_get_response16(gspca_dev, 0x07, 1); in sd_config()
396 switch (gspca_dev->usb_buf[0]) { in sd_config()
405 gspca_dev->usb_buf[1]); in sd_config()
408 gspca_dbg(gspca_dev, D_PROBE, "MR97310A CIF camera detected, sensor: %d\n", in sd_config()
435 if (gspca_dev->usb_buf[0] == 0x01) { in sd_config()
437 } else if ((gspca_dev->usb_buf[0] != 0x03) && in sd_config()
438 (gspca_dev->usb_buf[0] != 0x04)) { in sd_config()
440 gspca_dev->usb_buf[0]); in sd_config()
445 if ((gspca_dev->usb_buf[0] == 0x03) && in sd_config()
446 (gspca_dev->usb_buf[1] == 0x50)) in sd_config()
448 if (gspca_dev->usb_buf[0] == 0x04) { in sd_config()
450 switch (gspca_dev->usb_buf[1]) { in sd_config()
453 gspca_dbg(gspca_dev, D_PROBE, "sensor_type corrected to 0\n"); in sd_config()
460 gspca_dev->usb_buf[1]); in sd_config()
465 gspca_dbg(gspca_dev, D_PROBE, "MR97310A VGA camera detected, sensor: %d\n", in sd_config()
469 sd_stopN(gspca_dev); in sd_config()
473 gspca_dbg(gspca_dev, D_PROBE, "Forcing sensor type to: %d\n", in sd_config()
481 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
486 static int start_cif_cam(struct gspca_dev *gspca_dev) in start_cif_cam() argument
488 struct sd *sd = (struct sd *) gspca_dev; in start_cif_cam()
489 __u8 *data = gspca_dev->usb_buf; in start_cif_cam()
511 switch (gspca_dev->pixfmt.width) { in start_cif_cam()
532 err_code = mr_write(gspca_dev, 11); in start_cif_cam()
555 err_code = sensor_write_regs(gspca_dev, cif_sensor0_init_data, in start_cif_cam()
577 gspca_dev->usb_buf[0] = 0x0a; in start_cif_cam()
578 gspca_dev->usb_buf[1] = 0x00; in start_cif_cam()
579 err_code = mr_write(gspca_dev, 2); in start_cif_cam()
582 err_code = sensor_write_regs(gspca_dev, cif_sensor1_init_data, in start_cif_cam()
588 static int start_vga_cam(struct gspca_dev *gspca_dev) in start_vga_cam() argument
590 struct sd *sd = (struct sd *) gspca_dev; in start_vga_cam()
591 __u8 *data = gspca_dev->usb_buf; in start_vga_cam()
608 switch (gspca_dev->pixfmt.width) { in start_vga_cam()
642 err_code = mr_write(gspca_dev, 11); in start_vga_cam()
655 err_code = sensor_write_regs(gspca_dev, vga_sensor0_init_data, in start_vga_cam()
684 err_code = sensor_write_regs(gspca_dev, color_adj, in start_vga_cam()
687 err_code = sensor_write_regs(gspca_dev, color_no_adj, in start_vga_cam()
693 err_code = sensor_write_regs(gspca_dev, vga_sensor1_init_data, in start_vga_cam()
735 err_code = sensor_write_regs(gspca_dev, vga_sensor2_init_data, in start_vga_cam()
741 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
743 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
752 err_code = zero_the_pointer(gspca_dev); in sd_start()
756 err_code = stream_start(gspca_dev); in sd_start()
761 err_code = start_cif_cam(gspca_dev); in sd_start()
763 err_code = start_vga_cam(gspca_dev); in sd_start()
768 return isoc_enable(gspca_dev); in sd_start()
771 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
773 struct sd *sd = (struct sd *) gspca_dev; in sd_stopN()
775 stream_stop(gspca_dev); in sd_stopN()
777 zero_the_pointer(gspca_dev); in sd_stopN()
779 lcd_stop(gspca_dev); in sd_stopN()
782 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) in setbrightness() argument
784 struct sd *sd = (struct sd *) gspca_dev; in setbrightness()
797 sensor_write1(gspca_dev, sign_reg, 0x00); in setbrightness()
799 sensor_write1(gspca_dev, sign_reg, 0x01); in setbrightness()
806 sensor_write1(gspca_dev, value_reg, val); in setbrightness()
809 static void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 min_clockdiv) in setexposure() argument
811 struct sd *sd = (struct sd *) gspca_dev; in setexposure()
819 sensor_write1(gspca_dev, 3, exposure >> 4); in setexposure()
820 sensor_write1(gspca_dev, 4, exposure & 0x0f); in setexposure()
824 sensor_write1(gspca_dev, 3, exposure >> 8); in setexposure()
825 sensor_write1(gspca_dev, 4, exposure & 0xff); in setexposure()
837 if (clockdiv < min_clockdiv && gspca_dev->pixfmt.width >= 320) in setexposure()
856 sensor_write_reg(gspca_dev, 0x0e, 0, buf, 2); in setexposure()
857 sensor_write1(gspca_dev, 0x02, clockdiv); in setexposure()
861 static void setgain(struct gspca_dev *gspca_dev, s32 val) in setgain() argument
863 struct sd *sd = (struct sd *) gspca_dev; in setgain()
867 sensor_write1(gspca_dev, 0x0e, val); in setgain()
870 sensor_write1(gspca_dev, gainreg, val >> 8); in setgain()
871 sensor_write1(gspca_dev, gainreg + 1, val & 0xff); in setgain()
874 sensor_write1(gspca_dev, 0x10, val); in setgain()
877 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) in setcontrast() argument
879 sensor_write1(gspca_dev, 0x1c, val); in setcontrast()
884 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
885 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
886 struct sd *sd = (struct sd *)gspca_dev; in sd_s_ctrl()
888 gspca_dev->usb_err = 0; in sd_s_ctrl()
890 if (!gspca_dev->streaming) in sd_s_ctrl()
895 setbrightness(gspca_dev, ctrl->val); in sd_s_ctrl()
898 setcontrast(gspca_dev, ctrl->val); in sd_s_ctrl()
901 setexposure(gspca_dev, sd->exposure->val, in sd_s_ctrl()
905 setgain(gspca_dev, ctrl->val); in sd_s_ctrl()
908 return gspca_dev->usb_err; in sd_s_ctrl()
915 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
917 struct sd *sd = (struct sd *)gspca_dev; in sd_init_controls()
918 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
937 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()
1009 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
1013 struct sd *sd = (struct sd *) gspca_dev; in sd_pkt_scan()
1016 sof = pac_find_sof(gspca_dev, &sd->sof_read, data, len); in sd_pkt_scan()
1026 gspca_frame_add(gspca_dev, LAST_PACKET, in sd_pkt_scan()
1029 gspca_frame_add(gspca_dev, FIRST_PACKET, in sd_pkt_scan()
1034 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()