Lines Matching refs:gspca_dev
73 struct gspca_dev gspca_dev; /* !! must be the first item */
92 static void sd_stopN(struct gspca_dev *gspca_dev);
122 /* the bytes to write are in gspca_dev->usb_buf */
123 static int mr_write(struct gspca_dev *gspca_dev, int len)
127 rc = usb_bulk_msg(gspca_dev->dev,
128 usb_sndbulkpipe(gspca_dev->dev, 4),
129 gspca_dev->usb_buf, len, NULL, 500);
132 gspca_dev->usb_buf[0], rc);
136 /* the bytes are read into gspca_dev->usb_buf */
137 static int mr_read(struct gspca_dev *gspca_dev, int len)
141 rc = usb_bulk_msg(gspca_dev->dev,
142 usb_rcvbulkpipe(gspca_dev->dev, 3),
143 gspca_dev->usb_buf, len, NULL, 500);
146 gspca_dev->usb_buf[0], rc);
150 static int sensor_write_reg(struct gspca_dev *gspca_dev, u8 reg, u8 flags,
153 gspca_dev->usb_buf[0] = 0x1f;
154 gspca_dev->usb_buf[1] = flags;
155 gspca_dev->usb_buf[2] = reg;
156 memcpy(gspca_dev->usb_buf + 3, data, len);
158 return mr_write(gspca_dev, len + 3);
161 static int sensor_write_regs(struct gspca_dev *gspca_dev,
167 rc = sensor_write_reg(gspca_dev, data[i].reg, data[i].flags,
176 static int sensor_write1(struct gspca_dev *gspca_dev, u8 reg, u8 data)
178 struct sd *sd = (struct sd *) gspca_dev;
184 rc = sensor_write_reg(gspca_dev, reg, 0x01, &buf, 1);
187 rc = sensor_write_reg(gspca_dev, reg, 0x00, &buf, 1);
194 rc = sensor_write_reg(gspca_dev, confirm_reg, 0x00, &buf, 1);
201 static int cam_get_response16(struct gspca_dev *gspca_dev, u8 reg, int verbose)
205 gspca_dev->usb_buf[0] = reg;
206 err_code = mr_write(gspca_dev, 1);
210 err_code = mr_read(gspca_dev, 16);
215 gspca_dbg(gspca_dev, D_PROBE, "Register: %02x reads %02x%02x%02x\n",
217 gspca_dev->usb_buf[0],
218 gspca_dev->usb_buf[1],
219 gspca_dev->usb_buf[2]);
224 static int zero_the_pointer(struct gspca_dev *gspca_dev)
226 __u8 *data = gspca_dev->usb_buf;
231 err_code = cam_get_response16(gspca_dev, 0x21, 0);
237 err_code = mr_write(gspca_dev, 2);
241 err_code = cam_get_response16(gspca_dev, 0x21, 0);
247 err_code = mr_write(gspca_dev, 2);
251 err_code = cam_get_response16(gspca_dev, 0x21, 0);
257 err_code = mr_write(gspca_dev, 2);
261 err_code = cam_get_response16(gspca_dev, 0x21, 0);
267 err_code = mr_write(gspca_dev, 2);
272 err_code = cam_get_response16(gspca_dev, 0x21, 0);
279 gspca_err(gspca_dev, "status is %02x\n", status);
285 err_code = mr_write(gspca_dev, 2);
289 err_code = cam_get_response16(gspca_dev, 0x21, 0);
296 err_code = mr_write(gspca_dev, 1);
300 err_code = mr_read(gspca_dev, 16);
307 static int stream_start(struct gspca_dev *gspca_dev)
309 gspca_dev->usb_buf[0] = 0x01;
310 gspca_dev->usb_buf[1] = 0x01;
311 return mr_write(gspca_dev, 2);
314 static void stream_stop(struct gspca_dev *gspca_dev)
316 gspca_dev->usb_buf[0] = 0x01;
317 gspca_dev->usb_buf[1] = 0x00;
318 if (mr_write(gspca_dev, 2) < 0)
319 gspca_err(gspca_dev, "Stream Stop failed\n");
322 static void lcd_stop(struct gspca_dev *gspca_dev)
324 gspca_dev->usb_buf[0] = 0x19;
325 gspca_dev->usb_buf[1] = 0x54;
326 if (mr_write(gspca_dev, 2) < 0)
327 gspca_err(gspca_dev, "LCD Stop failed\n");
330 static int isoc_enable(struct gspca_dev *gspca_dev)
332 gspca_dev->usb_buf[0] = 0x00;
333 gspca_dev->usb_buf[1] = 0x4d; /* ISOC transferring enable... */
334 return mr_write(gspca_dev, 2);
338 static int sd_config(struct gspca_dev *gspca_dev,
341 struct sd *sd = (struct sd *) gspca_dev;
345 cam = &gspca_dev->cam;
358 err_code = zero_the_pointer(gspca_dev);
362 err_code = stream_start(gspca_dev);
367 err_code = cam_get_response16(gspca_dev, 0x07, 1);
395 switch (gspca_dev->usb_buf[0]) {
404 gspca_dev->usb_buf[1]);
407 gspca_dbg(gspca_dev, D_PROBE, "MR97310A CIF camera detected, sensor: %d\n",
417 * Name gspca_dev->usb_buf[] sd->sensor_type
434 if (gspca_dev->usb_buf[0] == 0x01) {
436 } else if ((gspca_dev->usb_buf[0] != 0x03) &&
437 (gspca_dev->usb_buf[0] != 0x04)) {
439 gspca_dev->usb_buf[0]);
444 if ((gspca_dev->usb_buf[0] == 0x03) &&
445 (gspca_dev->usb_buf[1] == 0x50))
447 if (gspca_dev->usb_buf[0] == 0x04) {
449 switch (gspca_dev->usb_buf[1]) {
452 gspca_dbg(gspca_dev, D_PROBE, "sensor_type corrected to 0\n");
459 gspca_dev->usb_buf[1]);
464 gspca_dbg(gspca_dev, D_PROBE, "MR97310A VGA camera detected, sensor: %d\n",
468 sd_stopN(gspca_dev);
472 gspca_dbg(gspca_dev, D_PROBE, "Forcing sensor type to: %d\n",
480 static int sd_init(struct gspca_dev *gspca_dev)
485 static int start_cif_cam(struct gspca_dev *gspca_dev)
487 struct sd *sd = (struct sd *) gspca_dev;
488 __u8 *data = gspca_dev->usb_buf;
510 switch (gspca_dev->pixfmt.width) {
531 err_code = mr_write(gspca_dev, 11);
554 err_code = sensor_write_regs(gspca_dev, cif_sensor0_init_data,
576 gspca_dev->usb_buf[0] = 0x0a;
577 gspca_dev->usb_buf[1] = 0x00;
578 err_code = mr_write(gspca_dev, 2);
581 err_code = sensor_write_regs(gspca_dev, cif_sensor1_init_data,
587 static int start_vga_cam(struct gspca_dev *gspca_dev)
589 struct sd *sd = (struct sd *) gspca_dev;
590 __u8 *data = gspca_dev->usb_buf;
607 switch (gspca_dev->pixfmt.width) {
641 err_code = mr_write(gspca_dev, 11);
654 err_code = sensor_write_regs(gspca_dev, vga_sensor0_init_data,
683 err_code = sensor_write_regs(gspca_dev, color_adj,
686 err_code = sensor_write_regs(gspca_dev, color_no_adj,
692 err_code = sensor_write_regs(gspca_dev, vga_sensor1_init_data,
734 err_code = sensor_write_regs(gspca_dev, vga_sensor2_init_data,
740 static int sd_start(struct gspca_dev *gspca_dev)
742 struct sd *sd = (struct sd *) gspca_dev;
751 err_code = zero_the_pointer(gspca_dev);
755 err_code = stream_start(gspca_dev);
760 err_code = start_cif_cam(gspca_dev);
762 err_code = start_vga_cam(gspca_dev);
767 return isoc_enable(gspca_dev);
770 static void sd_stopN(struct gspca_dev *gspca_dev)
772 struct sd *sd = (struct sd *) gspca_dev;
774 stream_stop(gspca_dev);
776 zero_the_pointer(gspca_dev);
778 lcd_stop(gspca_dev);
781 static void setbrightness(struct gspca_dev *gspca_dev, s32 val)
783 struct sd *sd = (struct sd *) gspca_dev;
796 sensor_write1(gspca_dev, sign_reg, 0x00);
798 sensor_write1(gspca_dev, sign_reg, 0x01);
805 sensor_write1(gspca_dev, value_reg, val);
808 static void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 min_clockdiv)
810 struct sd *sd = (struct sd *) gspca_dev;
818 sensor_write1(gspca_dev, 3, exposure >> 4);
819 sensor_write1(gspca_dev, 4, exposure & 0x0f);
823 sensor_write1(gspca_dev, 3, exposure >> 8);
824 sensor_write1(gspca_dev, 4, exposure & 0xff);
836 if (clockdiv < min_clockdiv && gspca_dev->pixfmt.width >= 320)
855 sensor_write_reg(gspca_dev, 0x0e, 0, buf, 2);
856 sensor_write1(gspca_dev, 0x02, clockdiv);
860 static void setgain(struct gspca_dev *gspca_dev, s32 val)
862 struct sd *sd = (struct sd *) gspca_dev;
866 sensor_write1(gspca_dev, 0x0e, val);
869 sensor_write1(gspca_dev, gainreg, val >> 8);
870 sensor_write1(gspca_dev, gainreg + 1, val & 0xff);
873 sensor_write1(gspca_dev, 0x10, val);
876 static void setcontrast(struct gspca_dev *gspca_dev, s32 val)
878 sensor_write1(gspca_dev, 0x1c, val);
883 struct gspca_dev *gspca_dev =
884 container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
885 struct sd *sd = (struct sd *)gspca_dev;
887 gspca_dev->usb_err = 0;
889 if (!gspca_dev->streaming)
894 setbrightness(gspca_dev, ctrl->val);
897 setcontrast(gspca_dev, ctrl->val);
900 setexposure(gspca_dev, sd->exposure->val,
904 setgain(gspca_dev, ctrl->val);
907 return gspca_dev->usb_err;
914 static int sd_init_controls(struct gspca_dev *gspca_dev)
916 struct sd *sd = (struct sd *)gspca_dev;
917 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
936 gspca_dev->vdev.ctrl_handler = hdl;
1008 static void sd_pkt_scan(struct gspca_dev *gspca_dev,
1012 struct sd *sd = (struct sd *) gspca_dev;
1015 sof = pac_find_sof(gspca_dev, &sd->sof_read, data, len);
1025 gspca_frame_add(gspca_dev, LAST_PACKET,
1028 gspca_frame_add(gspca_dev, FIRST_PACKET,
1033 gspca_frame_add(gspca_dev, INTER_PACKET, data, len);