Lines Matching refs:gspca_dev
147 struct gspca_dev gspca_dev; /* !! must be the first item */ member
195 static int val_reply(struct gspca_dev *gspca_dev, const char *reply, int rc) in val_reply() argument
212 static void reg_w(struct gspca_dev *gspca_dev, u16 value, u16 index) in reg_w() argument
220 rc = usb_control_msg(gspca_dev->dev, usb_rcvctrlpipe(gspca_dev->dev, 0), in reg_w()
226 gspca_dev->usb_err = rc; in reg_w()
229 if (val_reply(gspca_dev, buff, rc)) { in reg_w()
232 gspca_dev->usb_err = -EIO; in reg_w()
236 static void reg_w_buf(struct gspca_dev *gspca_dev, in reg_w_buf() argument
240 reg_w(gspca_dev, p->value, p->index); in reg_w_buf()
245 static void setexposure(struct gspca_dev *gspca_dev, s32 val) in setexposure() argument
248 unsigned int w = gspca_dev->pixfmt.width; in setexposure()
258 gspca_dev->usb_err = -EINVAL; in setexposure()
264 reg_w(gspca_dev, value, REG_COARSE_INTEGRATION_TIME_); in setexposure()
265 reg_w(gspca_dev, value, REG_COARSE_INTEGRATION_TIME_); in setexposure()
284 static void setggain(struct gspca_dev *gspca_dev, u16 global_gain) in setggain() argument
293 reg_w(gspca_dev, normalized, REG_GREEN1_GAIN); in setggain()
294 reg_w(gspca_dev, normalized, REG_GREEN2_GAIN); in setggain()
297 static void setbgain(struct gspca_dev *gspca_dev, in setbgain() argument
313 reg_w(gspca_dev, normalized, REG_BLUE_GAIN); in setbgain()
316 static void setrgain(struct gspca_dev *gspca_dev, in setrgain() argument
332 reg_w(gspca_dev, normalized, REG_RED_GAIN); in setrgain()
335 static void configure_wh(struct gspca_dev *gspca_dev) in configure_wh() argument
337 unsigned int w = gspca_dev->pixfmt.width; in configure_wh()
350 reg_w_buf(gspca_dev, in configure_wh()
361 reg_w_buf(gspca_dev, in configure_wh()
372 reg_w_buf(gspca_dev, in configure_wh()
376 gspca_dev->usb_err = -EINVAL; in configure_wh()
380 reg_w(gspca_dev, 0x0000, REG_SCALING_MODE); in configure_wh()
381 reg_w(gspca_dev, 0x0010, REG_SCALE_M); in configure_wh()
382 reg_w(gspca_dev, w, REG_X_OUTPUT_SIZE); in configure_wh()
383 reg_w(gspca_dev, gspca_dev->pixfmt.height, REG_Y_OUTPUT_SIZE); in configure_wh()
386 reg_w(gspca_dev, 0x0384, REG_FRAME_LENGTH_LINES_); in configure_wh()
387 reg_w(gspca_dev, 0x0960, REG_LINE_LENGTH_PCK_); in configure_wh()
389 reg_w(gspca_dev, 0x0640, REG_FRAME_LENGTH_LINES_); in configure_wh()
390 reg_w(gspca_dev, 0x0FA0, REG_LINE_LENGTH_PCK_); in configure_wh()
392 reg_w(gspca_dev, 0x0B4B, REG_FRAME_LENGTH_LINES_); in configure_wh()
393 reg_w(gspca_dev, 0x1F40, REG_LINE_LENGTH_PCK_); in configure_wh()
396 gspca_dev->usb_err = -EINVAL; in configure_wh()
402 static void configure_encrypted(struct gspca_dev *gspca_dev) in configure_encrypted() argument
428 PDEBUG(D_STREAM, "Encrypted begin, w = %u\n", gspca_dev->pixfmt.width); in configure_encrypted()
429 reg_w_buf(gspca_dev, reg_init_begin, ARRAY_SIZE(reg_init_begin)); in configure_encrypted()
430 configure_wh(gspca_dev); in configure_encrypted()
431 reg_w_buf(gspca_dev, reg_init_end, ARRAY_SIZE(reg_init_end)); in configure_encrypted()
432 reg_w(gspca_dev, 0x0100, REG_GROUPED_PARAMETER_HOLD); in configure_encrypted()
433 reg_w(gspca_dev, 0x0000, REG_GROUPED_PARAMETER_HOLD); in configure_encrypted()
438 static int configure(struct gspca_dev *gspca_dev) in configure() argument
458 rc = usb_control_msg(gspca_dev->dev, usb_rcvctrlpipe(gspca_dev->dev, 0), in configure()
460 if (val_reply(gspca_dev, buff, rc)) { in configure()
475 rc = usb_control_msg(gspca_dev->dev, usb_sndctrlpipe(gspca_dev->dev, 0), in configure()
482 rc = usb_control_msg(gspca_dev->dev, usb_sndctrlpipe(gspca_dev->dev, 0), in configure()
489 rc = usb_control_msg(gspca_dev->dev, usb_sndctrlpipe(gspca_dev->dev, 0), in configure()
505 gspca_dev->usb_err = 0; in configure()
506 configure_encrypted(gspca_dev); in configure()
507 if (gspca_dev->usb_err) in configure()
508 return gspca_dev->usb_err; in configure()
511 rc = usb_control_msg(gspca_dev->dev, usb_sndctrlpipe(gspca_dev->dev, 0), in configure()
522 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
525 gspca_dev->cam.cam_mode = vga_mode; in sd_config()
526 gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode); in sd_config()
529 gspca_dev->cam.no_urb_create = 0; in sd_config()
530 gspca_dev->cam.bulk_nurbs = 4; in sd_config()
532 gspca_dev->cam.bulk_size = BULK_SIZE; in sd_config()
534 gspca_dev->cam.bulk = 1; in sd_config()
539 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
541 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
546 rc = configure(gspca_dev); in sd_start()
556 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
560 struct sd *sd = (struct sd *) gspca_dev; in sd_pkt_scan()
564 if (sd->this_f + len == gspca_dev->pixfmt.sizeimage) { in sd_pkt_scan()
565 gspca_frame_add(gspca_dev, LAST_PACKET, data, len); in sd_pkt_scan()
567 sd->this_f, gspca_dev->pixfmt.sizeimage, len); in sd_pkt_scan()
570 gspca_frame_add(gspca_dev, DISCARD_PACKET, NULL, 0); in sd_pkt_scan()
572 sd->this_f, gspca_dev->pixfmt.sizeimage, len); in sd_pkt_scan()
577 gspca_frame_add(gspca_dev, FIRST_PACKET, data, len); in sd_pkt_scan()
579 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()
584 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
591 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
592 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
593 struct sd *sd = (struct sd *) gspca_dev; in sd_s_ctrl()
595 gspca_dev->usb_err = 0; in sd_s_ctrl()
597 if (!gspca_dev->streaming) in sd_s_ctrl()
602 setexposure(gspca_dev, ctrl->val); in sd_s_ctrl()
606 setggain(gspca_dev, gspca_dev->gain->val); in sd_s_ctrl()
610 setbgain(gspca_dev, sd->blue->val, gspca_dev->gain->val); in sd_s_ctrl()
614 setrgain(gspca_dev, sd->red->val, gspca_dev->gain->val); in sd_s_ctrl()
617 return gspca_dev->usb_err; in sd_s_ctrl()
624 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
626 struct sd *sd = (struct sd *) gspca_dev; in sd_init_controls()
627 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
629 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()
632 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
636 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()