Lines Matching refs:gspca_dev

57 	struct gspca_dev gspca_dev;	/* !! must be the first item */  member
76 static void se401_write_req(struct gspca_dev *gspca_dev, u16 req, u16 value, in se401_write_req() argument
81 if (gspca_dev->usb_err < 0) in se401_write_req()
84 err = usb_control_msg(gspca_dev->dev, in se401_write_req()
85 usb_sndctrlpipe(gspca_dev->dev, 0), req, in se401_write_req()
92 gspca_dev->usb_err = err; in se401_write_req()
96 static void se401_read_req(struct gspca_dev *gspca_dev, u16 req, int silent) in se401_read_req() argument
100 if (gspca_dev->usb_err < 0) in se401_read_req()
105 gspca_dev->usb_err = -ENOBUFS; in se401_read_req()
109 err = usb_control_msg(gspca_dev->dev, in se401_read_req()
110 usb_rcvctrlpipe(gspca_dev->dev, 0), req, in se401_read_req()
112 0, 0, gspca_dev->usb_buf, READ_REQ_SIZE, 1000); in se401_read_req()
117 gspca_dev->usb_err = err; in se401_read_req()
121 static void se401_set_feature(struct gspca_dev *gspca_dev, in se401_set_feature() argument
126 if (gspca_dev->usb_err < 0) in se401_set_feature()
129 err = usb_control_msg(gspca_dev->dev, in se401_set_feature()
130 usb_sndctrlpipe(gspca_dev->dev, 0), in se401_set_feature()
137 gspca_dev->usb_err = err; in se401_set_feature()
141 static int se401_get_feature(struct gspca_dev *gspca_dev, u16 selector) in se401_get_feature() argument
145 if (gspca_dev->usb_err < 0) in se401_get_feature()
146 return gspca_dev->usb_err; in se401_get_feature()
150 gspca_dev->usb_err = -ENOBUFS; in se401_get_feature()
151 return gspca_dev->usb_err; in se401_get_feature()
154 err = usb_control_msg(gspca_dev->dev, in se401_get_feature()
155 usb_rcvctrlpipe(gspca_dev->dev, 0), in se401_get_feature()
158 0, selector, gspca_dev->usb_buf, 2, 1000); in se401_get_feature()
162 gspca_dev->usb_err = err; in se401_get_feature()
165 return gspca_dev->usb_buf[0] | (gspca_dev->usb_buf[1] << 8); in se401_get_feature()
168 static void setbrightness(struct gspca_dev *gspca_dev, s32 val) in setbrightness() argument
171 se401_write_req(gspca_dev, SE401_REQ_SET_BRT, val, 0); in setbrightness()
174 static void setgain(struct gspca_dev *gspca_dev, s32 val) in setgain() argument
179 se401_set_feature(gspca_dev, HV7131_REG_ARCG, gain); in setgain()
181 se401_set_feature(gspca_dev, HV7131_REG_AGCG, gain); in setgain()
183 se401_set_feature(gspca_dev, HV7131_REG_ABCG, gain); in setgain()
186 static void setexposure(struct gspca_dev *gspca_dev, s32 val, s32 freq) in setexposure() argument
188 struct sd *sd = (struct sd *) gspca_dev; in setexposure()
209 se401_set_feature(gspca_dev, HV7131_REG_TITL, expose_l); in setexposure()
211 se401_set_feature(gspca_dev, HV7131_REG_TITM, expose_m); in setexposure()
213 se401_set_feature(gspca_dev, HV7131_REG_TITU, expose_h); in setexposure()
216 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
219 struct sd *sd = (struct sd *)gspca_dev; in sd_config()
220 struct cam *cam = &gspca_dev->cam; in sd_config()
221 u8 *cd = gspca_dev->usb_buf; in sd_config()
226 se401_read_req(gspca_dev, SE401_REQ_GET_CAMERA_DESCRIPTOR, 1); in sd_config()
227 if (gspca_dev->usb_err) { in sd_config()
230 usb_reset_device(gspca_dev->dev); in sd_config()
231 gspca_dev->usb_err = 0; in sd_config()
232 se401_read_req(gspca_dev, SE401_REQ_GET_CAMERA_DESCRIPTOR, 0); in sd_config()
236 se401_write_req(gspca_dev, SE401_REQ_LED_CONTROL, 0, 0); in sd_config()
237 if (gspca_dev->usb_err) in sd_config()
238 return gspca_dev->usb_err; in sd_config()
315 se401_read_req(gspca_dev, SE401_REQ_GET_BRT, 1); in sd_config()
316 sd->has_brightness = !!gspca_dev->usb_err; in sd_config()
317 gspca_dev->usb_err = 0; in sd_config()
323 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
329 static int sd_isoc_init(struct gspca_dev *gspca_dev) in sd_isoc_init() argument
331 gspca_dev->alt = 1; /* Ignore the bogus isoc alt settings */ in sd_isoc_init()
333 return gspca_dev->usb_err; in sd_isoc_init()
337 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
339 struct sd *sd = (struct sd *)gspca_dev; in sd_start()
340 int mult = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; in sd_start()
343 se401_write_req(gspca_dev, SE401_REQ_CAMERA_POWER, 1, 1); in sd_start()
344 if (gspca_dev->usb_err) { in sd_start()
347 usb_reset_device(gspca_dev->dev); in sd_start()
348 gspca_dev->usb_err = 0; in sd_start()
349 se401_write_req(gspca_dev, SE401_REQ_CAMERA_POWER, 1, 0); in sd_start()
351 se401_write_req(gspca_dev, SE401_REQ_LED_CONTROL, 1, 0); in sd_start()
353 se401_set_feature(gspca_dev, HV7131_REG_MODE_B, 0x05); in sd_start()
356 se401_write_req(gspca_dev, SE401_REQ_SET_WIDTH, in sd_start()
357 gspca_dev->pixfmt.width * mult, 0); in sd_start()
358 se401_write_req(gspca_dev, SE401_REQ_SET_HEIGHT, in sd_start()
359 gspca_dev->pixfmt.height * mult, 0); in sd_start()
374 se401_set_feature(gspca_dev, SE401_OPERATINGMODE, mode); in sd_start()
376 se401_set_feature(gspca_dev, HV7131_REG_ARLV, sd->resetlevel); in sd_start()
385 se401_write_req(gspca_dev, SE401_REQ_START_CONTINUOUS_CAPTURE, 0, 0); in sd_start()
387 return gspca_dev->usb_err; in sd_start()
390 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
392 se401_write_req(gspca_dev, SE401_REQ_STOP_CONTINUOUS_CAPTURE, 0, 0); in sd_stopN()
393 se401_write_req(gspca_dev, SE401_REQ_LED_CONTROL, 0, 0); in sd_stopN()
394 se401_write_req(gspca_dev, SE401_REQ_CAMERA_POWER, 0, 0); in sd_stopN()
397 static void sd_dq_callback(struct gspca_dev *gspca_dev) in sd_dq_callback() argument
399 struct sd *sd = (struct sd *)gspca_dev; in sd_dq_callback()
405 sd_stopN(gspca_dev); in sd_dq_callback()
406 sd_start(gspca_dev); in sd_dq_callback()
419 se401_get_feature(gspca_dev, HV7131_REG_HIREFNOH); in sd_dq_callback()
420 se401_get_feature(gspca_dev, HV7131_REG_HIREFNOL); in sd_dq_callback()
421 se401_get_feature(gspca_dev, HV7131_REG_LOREFNOH); in sd_dq_callback()
422 se401_get_feature(gspca_dev, HV7131_REG_LOREFNOL); in sd_dq_callback()
423 ahrc = 256*se401_get_feature(gspca_dev, HV7131_REG_HIREFNOH) + in sd_dq_callback()
424 se401_get_feature(gspca_dev, HV7131_REG_HIREFNOL); in sd_dq_callback()
425 alrc = 256*se401_get_feature(gspca_dev, HV7131_REG_LOREFNOH) + in sd_dq_callback()
426 se401_get_feature(gspca_dev, HV7131_REG_LOREFNOL); in sd_dq_callback()
452 se401_set_feature(gspca_dev, HV7131_REG_ARLV, sd->resetlevel); in sd_dq_callback()
458 static void sd_complete_frame(struct gspca_dev *gspca_dev, u8 *data, int len) in sd_complete_frame() argument
460 struct sd *sd = (struct sd *)gspca_dev; in sd_complete_frame()
471 gspca_dev->last_packet_type = DISCARD_PACKET; in sd_complete_frame()
477 gspca_frame_add(gspca_dev, LAST_PACKET, data, len); in sd_complete_frame()
480 static void sd_pkt_scan_janggu(struct gspca_dev *gspca_dev, u8 *data, int len) in sd_pkt_scan_janggu() argument
482 struct sd *sd = (struct sd *)gspca_dev; in sd_pkt_scan_janggu()
483 int imagesize = gspca_dev->pixfmt.width * gspca_dev->pixfmt.height; in sd_pkt_scan_janggu()
490 if (gspca_dev->last_packet_type == LAST_PACKET && len == 1024) { in sd_pkt_scan_janggu()
491 gspca_dev->last_packet_type = DISCARD_PACKET; in sd_pkt_scan_janggu()
538 gspca_frame_add(gspca_dev, INTER_PACKET, sd->packet, in sd_pkt_scan_janggu()
547 sd_complete_frame(gspca_dev, sd->packet, plen); in sd_pkt_scan_janggu()
550 gspca_frame_add(gspca_dev, FIRST_PACKET, sd->packet, in sd_pkt_scan_janggu()
562 gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0); in sd_pkt_scan_janggu()
563 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); in sd_pkt_scan_janggu()
566 static void sd_pkt_scan_bayer(struct gspca_dev *gspca_dev, u8 *data, int len) in sd_pkt_scan_bayer() argument
568 struct cam *cam = &gspca_dev->cam; in sd_pkt_scan_bayer()
569 int imagesize = cam->cam_mode[gspca_dev->curr_mode].sizeimage; in sd_pkt_scan_bayer()
571 if (gspca_dev->image_len == 0) { in sd_pkt_scan_bayer()
572 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); in sd_pkt_scan_bayer()
576 if (gspca_dev->image_len + len >= imagesize) { in sd_pkt_scan_bayer()
577 sd_complete_frame(gspca_dev, data, len); in sd_pkt_scan_bayer()
581 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan_bayer()
584 static void sd_pkt_scan(struct gspca_dev *gspca_dev, u8 *data, int len) in sd_pkt_scan() argument
586 int mult = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; in sd_pkt_scan()
592 sd_pkt_scan_bayer(gspca_dev, data, len); in sd_pkt_scan()
594 sd_pkt_scan_janggu(gspca_dev, data, len); in sd_pkt_scan()
598 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, u8 *data, int len) in sd_int_pkt_scan() argument
600 struct sd *sd = (struct sd *)gspca_dev; in sd_int_pkt_scan()
615 input_report_key(gspca_dev->input_dev, KEY_CAMERA, state); in sd_int_pkt_scan()
616 input_sync(gspca_dev->input_dev); in sd_int_pkt_scan()
626 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
627 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
628 struct sd *sd = (struct sd *)gspca_dev; in sd_s_ctrl()
630 gspca_dev->usb_err = 0; in sd_s_ctrl()
632 if (!gspca_dev->streaming) in sd_s_ctrl()
637 setbrightness(gspca_dev, ctrl->val); in sd_s_ctrl()
640 setgain(gspca_dev, ctrl->val); in sd_s_ctrl()
643 setexposure(gspca_dev, ctrl->val, sd->freq->val); in sd_s_ctrl()
646 return gspca_dev->usb_err; in sd_s_ctrl()
653 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
655 struct sd *sd = (struct sd *)gspca_dev; in sd_init_controls()
656 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
658 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()