Lines Matching refs:gspca_dev
43 struct gspca_dev gspca_dev; /* !! must be the first item */
62 static void se401_write_req(struct gspca_dev *gspca_dev, u16 req, u16 value,
67 if (gspca_dev->usb_err < 0)
70 err = usb_control_msg(gspca_dev->dev,
71 usb_sndctrlpipe(gspca_dev->dev, 0), req,
78 gspca_dev->usb_err = err;
82 static void se401_read_req(struct gspca_dev *gspca_dev, u16 req, int silent)
86 if (gspca_dev->usb_err < 0)
91 gspca_dev->usb_err = -ENOBUFS;
95 err = usb_control_msg(gspca_dev->dev,
96 usb_rcvctrlpipe(gspca_dev->dev, 0), req,
98 0, 0, gspca_dev->usb_buf, READ_REQ_SIZE, 1000);
103 gspca_dev->usb_err = err;
108 memset(gspca_dev->usb_buf, 0, READ_REQ_SIZE);
112 static void se401_set_feature(struct gspca_dev *gspca_dev,
117 if (gspca_dev->usb_err < 0)
120 err = usb_control_msg(gspca_dev->dev,
121 usb_sndctrlpipe(gspca_dev->dev, 0),
128 gspca_dev->usb_err = err;
132 static int se401_get_feature(struct gspca_dev *gspca_dev, u16 selector)
136 if (gspca_dev->usb_err < 0)
137 return gspca_dev->usb_err;
141 gspca_dev->usb_err = -ENOBUFS;
142 return gspca_dev->usb_err;
145 err = usb_control_msg(gspca_dev->dev,
146 usb_rcvctrlpipe(gspca_dev->dev, 0),
149 0, selector, gspca_dev->usb_buf, 2, 1000);
153 gspca_dev->usb_err = err;
156 return gspca_dev->usb_buf[0] | (gspca_dev->usb_buf[1] << 8);
159 static void setbrightness(struct gspca_dev *gspca_dev, s32 val)
162 se401_write_req(gspca_dev, SE401_REQ_SET_BRT, val, 0);
165 static void setgain(struct gspca_dev *gspca_dev, s32 val)
170 se401_set_feature(gspca_dev, HV7131_REG_ARCG, gain);
172 se401_set_feature(gspca_dev, HV7131_REG_AGCG, gain);
174 se401_set_feature(gspca_dev, HV7131_REG_ABCG, gain);
177 static void setexposure(struct gspca_dev *gspca_dev, s32 val, s32 freq)
179 struct sd *sd = (struct sd *) gspca_dev;
200 se401_set_feature(gspca_dev, HV7131_REG_TITL, expose_l);
202 se401_set_feature(gspca_dev, HV7131_REG_TITM, expose_m);
204 se401_set_feature(gspca_dev, HV7131_REG_TITU, expose_h);
207 static int sd_config(struct gspca_dev *gspca_dev,
210 struct sd *sd = (struct sd *)gspca_dev;
211 struct cam *cam = &gspca_dev->cam;
212 u8 *cd = gspca_dev->usb_buf;
217 se401_read_req(gspca_dev, SE401_REQ_GET_CAMERA_DESCRIPTOR, 1);
218 if (gspca_dev->usb_err) {
221 usb_reset_device(gspca_dev->dev);
222 gspca_dev->usb_err = 0;
223 se401_read_req(gspca_dev, SE401_REQ_GET_CAMERA_DESCRIPTOR, 0);
227 se401_write_req(gspca_dev, SE401_REQ_LED_CONTROL, 0, 0);
228 if (gspca_dev->usb_err)
229 return gspca_dev->usb_err;
306 se401_read_req(gspca_dev, SE401_REQ_GET_BRT, 1);
307 sd->has_brightness = !!gspca_dev->usb_err;
308 gspca_dev->usb_err = 0;
314 static int sd_init(struct gspca_dev *gspca_dev)
320 static int sd_isoc_init(struct gspca_dev *gspca_dev)
322 gspca_dev->alt = 1; /* Ignore the bogus isoc alt settings */
324 return gspca_dev->usb_err;
328 static int sd_start(struct gspca_dev *gspca_dev)
330 struct sd *sd = (struct sd *)gspca_dev;
331 int mult = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv;
334 se401_write_req(gspca_dev, SE401_REQ_CAMERA_POWER, 1, 1);
335 if (gspca_dev->usb_err) {
338 usb_reset_device(gspca_dev->dev);
339 gspca_dev->usb_err = 0;
340 se401_write_req(gspca_dev, SE401_REQ_CAMERA_POWER, 1, 0);
342 se401_write_req(gspca_dev, SE401_REQ_LED_CONTROL, 1, 0);
344 se401_set_feature(gspca_dev, HV7131_REG_MODE_B, 0x05);
347 se401_write_req(gspca_dev, SE401_REQ_SET_WIDTH,
348 gspca_dev->pixfmt.width * mult, 0);
349 se401_write_req(gspca_dev, SE401_REQ_SET_HEIGHT,
350 gspca_dev->pixfmt.height * mult, 0);
353 * se401_write_req(gspca_dev, SE401_REQ_SET_OUTPUT_MODE,
365 se401_set_feature(gspca_dev, SE401_OPERATINGMODE, mode);
367 se401_set_feature(gspca_dev, HV7131_REG_ARLV, sd->resetlevel);
376 se401_write_req(gspca_dev, SE401_REQ_START_CONTINUOUS_CAPTURE, 0, 0);
378 return gspca_dev->usb_err;
381 static void sd_stopN(struct gspca_dev *gspca_dev)
383 se401_write_req(gspca_dev, SE401_REQ_STOP_CONTINUOUS_CAPTURE, 0, 0);
384 se401_write_req(gspca_dev, SE401_REQ_LED_CONTROL, 0, 0);
385 se401_write_req(gspca_dev, SE401_REQ_CAMERA_POWER, 0, 0);
388 static void sd_dq_callback(struct gspca_dev *gspca_dev)
390 struct sd *sd = (struct sd *)gspca_dev;
396 sd_stopN(gspca_dev);
397 sd_start(gspca_dev);
410 se401_get_feature(gspca_dev, HV7131_REG_HIREFNOH);
411 se401_get_feature(gspca_dev, HV7131_REG_HIREFNOL);
412 se401_get_feature(gspca_dev, HV7131_REG_LOREFNOH);
413 se401_get_feature(gspca_dev, HV7131_REG_LOREFNOL);
414 ahrc = 256*se401_get_feature(gspca_dev, HV7131_REG_HIREFNOH) +
415 se401_get_feature(gspca_dev, HV7131_REG_HIREFNOL);
416 alrc = 256*se401_get_feature(gspca_dev, HV7131_REG_LOREFNOH) +
417 se401_get_feature(gspca_dev, HV7131_REG_LOREFNOL);
443 se401_set_feature(gspca_dev, HV7131_REG_ARLV, sd->resetlevel);
449 static void sd_complete_frame(struct gspca_dev *gspca_dev, u8 *data, int len)
451 struct sd *sd = (struct sd *)gspca_dev;
462 gspca_dev->last_packet_type = DISCARD_PACKET;
468 gspca_frame_add(gspca_dev, LAST_PACKET, data, len);
471 static void sd_pkt_scan_janggu(struct gspca_dev *gspca_dev, u8 *data, int len)
473 struct sd *sd = (struct sd *)gspca_dev;
474 int imagesize = gspca_dev->pixfmt.width * gspca_dev->pixfmt.height;
481 if (gspca_dev->last_packet_type == LAST_PACKET && len == 1024) {
482 gspca_dev->last_packet_type = DISCARD_PACKET;
529 gspca_frame_add(gspca_dev, INTER_PACKET, sd->packet,
538 sd_complete_frame(gspca_dev, sd->packet, plen);
541 gspca_frame_add(gspca_dev, FIRST_PACKET, sd->packet,
553 gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0);
554 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0);
557 static void sd_pkt_scan_bayer(struct gspca_dev *gspca_dev, u8 *data, int len)
559 struct cam *cam = &gspca_dev->cam;
560 int imagesize = cam->cam_mode[gspca_dev->curr_mode].sizeimage;
562 if (gspca_dev->image_len == 0) {
563 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len);
567 if (gspca_dev->image_len + len >= imagesize) {
568 sd_complete_frame(gspca_dev, data, len);
572 gspca_frame_add(gspca_dev, INTER_PACKET, data, len);
575 static void sd_pkt_scan(struct gspca_dev *gspca_dev, u8 *data, int len)
577 int mult = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv;
583 sd_pkt_scan_bayer(gspca_dev, data, len);
585 sd_pkt_scan_janggu(gspca_dev, data, len);
589 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, u8 *data, int len)
591 struct sd *sd = (struct sd *)gspca_dev;
606 input_report_key(gspca_dev->input_dev, KEY_CAMERA, state);
607 input_sync(gspca_dev->input_dev);
617 struct gspca_dev *gspca_dev =
618 container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
619 struct sd *sd = (struct sd *)gspca_dev;
621 gspca_dev->usb_err = 0;
623 if (!gspca_dev->streaming)
628 setbrightness(gspca_dev, ctrl->val);
631 setgain(gspca_dev, ctrl->val);
634 setexposure(gspca_dev, ctrl->val, sd->freq->val);
637 return gspca_dev->usb_err;
644 static int sd_init_controls(struct gspca_dev *gspca_dev)
646 struct sd *sd = (struct sd *)gspca_dev;
647 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
649 gspca_dev->vdev.ctrl_handler = hdl;