Lines Matching refs:gspca_dev
82 struct gspca_dev gspca_dev; /* !! must be the first item */ member
101 static void sd_stopN(struct gspca_dev *gspca_dev);
132 static int mr_write(struct gspca_dev *gspca_dev, int len) in mr_write() argument
136 rc = usb_bulk_msg(gspca_dev->dev, in mr_write()
137 usb_sndbulkpipe(gspca_dev->dev, 4), in mr_write()
138 gspca_dev->usb_buf, len, NULL, 500); in mr_write()
141 gspca_dev->usb_buf[0], rc); in mr_write()
146 static int mr_read(struct gspca_dev *gspca_dev, int len) in mr_read() argument
150 rc = usb_bulk_msg(gspca_dev->dev, in mr_read()
151 usb_rcvbulkpipe(gspca_dev->dev, 3), in mr_read()
152 gspca_dev->usb_buf, len, NULL, 500); in mr_read()
155 gspca_dev->usb_buf[0], rc); in mr_read()
159 static int sensor_write_reg(struct gspca_dev *gspca_dev, u8 reg, u8 flags, in sensor_write_reg() argument
162 gspca_dev->usb_buf[0] = 0x1f; in sensor_write_reg()
163 gspca_dev->usb_buf[1] = flags; in sensor_write_reg()
164 gspca_dev->usb_buf[2] = reg; in sensor_write_reg()
165 memcpy(gspca_dev->usb_buf + 3, data, len); in sensor_write_reg()
167 return mr_write(gspca_dev, len + 3); in sensor_write_reg()
170 static int sensor_write_regs(struct gspca_dev *gspca_dev, in sensor_write_regs() argument
176 rc = sensor_write_reg(gspca_dev, data[i].reg, data[i].flags, in sensor_write_regs()
185 static int sensor_write1(struct gspca_dev *gspca_dev, u8 reg, u8 data) in sensor_write1() argument
187 struct sd *sd = (struct sd *) gspca_dev; in sensor_write1()
193 rc = sensor_write_reg(gspca_dev, reg, 0x01, &buf, 1); in sensor_write1()
196 rc = sensor_write_reg(gspca_dev, reg, 0x00, &buf, 1); in sensor_write1()
203 rc = sensor_write_reg(gspca_dev, confirm_reg, 0x00, &buf, 1); in sensor_write1()
210 static int cam_get_response16(struct gspca_dev *gspca_dev, u8 reg, int verbose) in cam_get_response16() argument
214 gspca_dev->usb_buf[0] = reg; in cam_get_response16()
215 err_code = mr_write(gspca_dev, 1); in cam_get_response16()
219 err_code = mr_read(gspca_dev, 16); in cam_get_response16()
224 gspca_dbg(gspca_dev, D_PROBE, "Register: %02x reads %02x%02x%02x\n", in cam_get_response16()
226 gspca_dev->usb_buf[0], in cam_get_response16()
227 gspca_dev->usb_buf[1], in cam_get_response16()
228 gspca_dev->usb_buf[2]); in cam_get_response16()
233 static int zero_the_pointer(struct gspca_dev *gspca_dev) in zero_the_pointer() argument
235 __u8 *data = gspca_dev->usb_buf; in zero_the_pointer()
240 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
246 err_code = mr_write(gspca_dev, 2); in zero_the_pointer()
250 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
256 err_code = mr_write(gspca_dev, 2); in zero_the_pointer()
260 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
266 err_code = mr_write(gspca_dev, 2); in zero_the_pointer()
270 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
276 err_code = mr_write(gspca_dev, 2); in zero_the_pointer()
281 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
288 gspca_err(gspca_dev, "status is %02x\n", status); in zero_the_pointer()
294 err_code = mr_write(gspca_dev, 2); in zero_the_pointer()
298 err_code = cam_get_response16(gspca_dev, 0x21, 0); in zero_the_pointer()
306 err_code = mr_write(gspca_dev, 1); in zero_the_pointer()
310 err_code = mr_read(gspca_dev, 16); in zero_the_pointer()
317 static int stream_start(struct gspca_dev *gspca_dev) in stream_start() argument
319 gspca_dev->usb_buf[0] = 0x01; in stream_start()
320 gspca_dev->usb_buf[1] = 0x01; in stream_start()
321 return mr_write(gspca_dev, 2); in stream_start()
324 static void stream_stop(struct gspca_dev *gspca_dev) in stream_stop() argument
326 gspca_dev->usb_buf[0] = 0x01; in stream_stop()
327 gspca_dev->usb_buf[1] = 0x00; in stream_stop()
328 if (mr_write(gspca_dev, 2) < 0) in stream_stop()
329 gspca_err(gspca_dev, "Stream Stop failed\n"); in stream_stop()
332 static void lcd_stop(struct gspca_dev *gspca_dev) in lcd_stop() argument
334 gspca_dev->usb_buf[0] = 0x19; in lcd_stop()
335 gspca_dev->usb_buf[1] = 0x54; in lcd_stop()
336 if (mr_write(gspca_dev, 2) < 0) in lcd_stop()
337 gspca_err(gspca_dev, "LCD Stop failed\n"); in lcd_stop()
340 static int isoc_enable(struct gspca_dev *gspca_dev) in isoc_enable() argument
342 gspca_dev->usb_buf[0] = 0x00; in isoc_enable()
343 gspca_dev->usb_buf[1] = 0x4d; /* ISOC transferring enable... */ in isoc_enable()
344 return mr_write(gspca_dev, 2); in isoc_enable()
348 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
351 struct sd *sd = (struct sd *) gspca_dev; in sd_config()
355 cam = &gspca_dev->cam; in sd_config()
368 err_code = zero_the_pointer(gspca_dev); in sd_config()
372 err_code = stream_start(gspca_dev); in sd_config()
377 err_code = cam_get_response16(gspca_dev, 0x07, 1); in sd_config()
405 switch (gspca_dev->usb_buf[0]) { in sd_config()
414 gspca_dev->usb_buf[1]); in sd_config()
417 gspca_dbg(gspca_dev, D_PROBE, "MR97310A CIF camera detected, sensor: %d\n", in sd_config()
444 if (gspca_dev->usb_buf[0] == 0x01) { in sd_config()
446 } else if ((gspca_dev->usb_buf[0] != 0x03) && in sd_config()
447 (gspca_dev->usb_buf[0] != 0x04)) { in sd_config()
449 gspca_dev->usb_buf[0]); in sd_config()
454 if ((gspca_dev->usb_buf[0] == 0x03) && in sd_config()
455 (gspca_dev->usb_buf[1] == 0x50)) in sd_config()
457 if (gspca_dev->usb_buf[0] == 0x04) { in sd_config()
459 switch (gspca_dev->usb_buf[1]) { in sd_config()
462 gspca_dbg(gspca_dev, D_PROBE, "sensor_type corrected to 0\n"); in sd_config()
469 gspca_dev->usb_buf[1]); in sd_config()
474 gspca_dbg(gspca_dev, D_PROBE, "MR97310A VGA camera detected, sensor: %d\n", in sd_config()
478 sd_stopN(gspca_dev); in sd_config()
482 gspca_dbg(gspca_dev, D_PROBE, "Forcing sensor type to: %d\n", in sd_config()
490 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
495 static int start_cif_cam(struct gspca_dev *gspca_dev) in start_cif_cam() argument
497 struct sd *sd = (struct sd *) gspca_dev; in start_cif_cam()
498 __u8 *data = gspca_dev->usb_buf; in start_cif_cam()
520 switch (gspca_dev->pixfmt.width) { in start_cif_cam()
541 err_code = mr_write(gspca_dev, 11); in start_cif_cam()
564 err_code = sensor_write_regs(gspca_dev, cif_sensor0_init_data, in start_cif_cam()
586 gspca_dev->usb_buf[0] = 0x0a; in start_cif_cam()
587 gspca_dev->usb_buf[1] = 0x00; in start_cif_cam()
588 err_code = mr_write(gspca_dev, 2); in start_cif_cam()
591 err_code = sensor_write_regs(gspca_dev, cif_sensor1_init_data, in start_cif_cam()
597 static int start_vga_cam(struct gspca_dev *gspca_dev) in start_vga_cam() argument
599 struct sd *sd = (struct sd *) gspca_dev; in start_vga_cam()
600 __u8 *data = gspca_dev->usb_buf; in start_vga_cam()
617 switch (gspca_dev->pixfmt.width) { in start_vga_cam()
651 err_code = mr_write(gspca_dev, 11); in start_vga_cam()
664 err_code = sensor_write_regs(gspca_dev, vga_sensor0_init_data, in start_vga_cam()
693 err_code = sensor_write_regs(gspca_dev, color_adj, in start_vga_cam()
696 err_code = sensor_write_regs(gspca_dev, color_no_adj, in start_vga_cam()
702 err_code = sensor_write_regs(gspca_dev, vga_sensor1_init_data, in start_vga_cam()
744 err_code = sensor_write_regs(gspca_dev, vga_sensor2_init_data, in start_vga_cam()
750 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
752 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
761 err_code = zero_the_pointer(gspca_dev); in sd_start()
765 err_code = stream_start(gspca_dev); in sd_start()
770 err_code = start_cif_cam(gspca_dev); in sd_start()
772 err_code = start_vga_cam(gspca_dev); in sd_start()
777 return isoc_enable(gspca_dev); in sd_start()
780 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
782 struct sd *sd = (struct sd *) gspca_dev; in sd_stopN()
784 stream_stop(gspca_dev); in sd_stopN()
786 zero_the_pointer(gspca_dev); in sd_stopN()
788 lcd_stop(gspca_dev); in sd_stopN()
791 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) in setbrightness() argument
793 struct sd *sd = (struct sd *) gspca_dev; in setbrightness()
806 sensor_write1(gspca_dev, sign_reg, 0x00); in setbrightness()
808 sensor_write1(gspca_dev, sign_reg, 0x01); in setbrightness()
815 sensor_write1(gspca_dev, value_reg, val); in setbrightness()
818 static void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 min_clockdiv) in setexposure() argument
820 struct sd *sd = (struct sd *) gspca_dev; in setexposure()
828 sensor_write1(gspca_dev, 3, exposure >> 4); in setexposure()
829 sensor_write1(gspca_dev, 4, exposure & 0x0f); in setexposure()
833 sensor_write1(gspca_dev, 3, exposure >> 8); in setexposure()
834 sensor_write1(gspca_dev, 4, exposure & 0xff); in setexposure()
846 if (clockdiv < min_clockdiv && gspca_dev->pixfmt.width >= 320) in setexposure()
865 sensor_write_reg(gspca_dev, 0x0e, 0, buf, 2); in setexposure()
866 sensor_write1(gspca_dev, 0x02, clockdiv); in setexposure()
870 static void setgain(struct gspca_dev *gspca_dev, s32 val) in setgain() argument
872 struct sd *sd = (struct sd *) gspca_dev; in setgain()
876 sensor_write1(gspca_dev, 0x0e, val); in setgain()
879 sensor_write1(gspca_dev, gainreg, val >> 8); in setgain()
880 sensor_write1(gspca_dev, gainreg + 1, val & 0xff); in setgain()
883 sensor_write1(gspca_dev, 0x10, val); in setgain()
886 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) in setcontrast() argument
888 sensor_write1(gspca_dev, 0x1c, val); in setcontrast()
893 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
894 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
895 struct sd *sd = (struct sd *)gspca_dev; in sd_s_ctrl()
897 gspca_dev->usb_err = 0; in sd_s_ctrl()
899 if (!gspca_dev->streaming) in sd_s_ctrl()
904 setbrightness(gspca_dev, ctrl->val); in sd_s_ctrl()
907 setcontrast(gspca_dev, ctrl->val); in sd_s_ctrl()
910 setexposure(gspca_dev, sd->exposure->val, in sd_s_ctrl()
914 setgain(gspca_dev, ctrl->val); in sd_s_ctrl()
917 return gspca_dev->usb_err; in sd_s_ctrl()
924 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
926 struct sd *sd = (struct sd *)gspca_dev; in sd_init_controls()
927 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
946 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()
1018 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
1022 struct sd *sd = (struct sd *) gspca_dev; in sd_pkt_scan()
1025 sof = pac_find_sof(gspca_dev, &sd->sof_read, data, len); in sd_pkt_scan()
1035 gspca_frame_add(gspca_dev, LAST_PACKET, in sd_pkt_scan()
1038 gspca_frame_add(gspca_dev, FIRST_PACKET, in sd_pkt_scan()
1043 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()