Lines Matching refs:gspca_dev

109 	struct gspca_dev gspca_dev;		/* !! must be the first item */  member
241 static void reg_w_buf(struct gspca_dev *gspca_dev, in reg_w_buf() argument
247 if (gspca_dev->usb_err < 0) in reg_w_buf()
249 memcpy(gspca_dev->usb_buf, buffer, len); in reg_w_buf()
250 ret = usb_control_msg(gspca_dev->dev, in reg_w_buf()
251 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w_buf()
255 index, gspca_dev->usb_buf, len, in reg_w_buf()
260 gspca_dev->usb_err = ret; in reg_w_buf()
265 static void reg_w(struct gspca_dev *gspca_dev, in reg_w() argument
271 if (gspca_dev->usb_err < 0) in reg_w()
273 gspca_dev->usb_buf[0] = value; in reg_w()
274 ret = usb_control_msg(gspca_dev->dev, in reg_w()
275 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w()
278 0, index, gspca_dev->usb_buf, 1, in reg_w()
283 gspca_dev->usb_err = ret; in reg_w()
287 static void reg_w_seq(struct gspca_dev *gspca_dev, in reg_w_seq() argument
291 reg_w(gspca_dev, seq[0], seq[1]); in reg_w_seq()
297 static void reg_w_page(struct gspca_dev *gspca_dev, in reg_w_page() argument
303 if (gspca_dev->usb_err < 0) in reg_w_page()
308 gspca_dev->usb_buf[0] = page[index]; in reg_w_page()
309 ret = usb_control_msg(gspca_dev->dev, in reg_w_page()
310 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w_page()
313 0, index, gspca_dev->usb_buf, 1, in reg_w_page()
318 gspca_dev->usb_err = ret; in reg_w_page()
325 static void reg_w_var(struct gspca_dev *gspca_dev, in reg_w_var() argument
338 reg_w_page(gspca_dev, page3, page3_len); in reg_w_var()
342 gspca_err(gspca_dev, "Incorrect variable sequence\n"); in reg_w_var()
347 reg_w_buf(gspca_dev, in reg_w_var()
352 reg_w_buf(gspca_dev, index, seq, 8); in reg_w_var()
363 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
366 struct sd *sd = (struct sd *) gspca_dev; in sd_config()
369 cam = &gspca_dev->cam; in sd_config()
378 static void setbrightcont(struct gspca_dev *gspca_dev) in setbrightcont() argument
380 struct sd *sd = (struct sd *) gspca_dev; in setbrightcont()
389 reg_w(gspca_dev, 0xff, 0x00); /* page 0 */ in setbrightcont()
399 reg_w(gspca_dev, 0xa2 + i, v); in setbrightcont()
401 reg_w(gspca_dev, 0xdc, 0x01); in setbrightcont()
404 static void setcolors(struct gspca_dev *gspca_dev) in setcolors() argument
406 struct sd *sd = (struct sd *) gspca_dev; in setcolors()
413 reg_w(gspca_dev, 0xff, 0x03); /* page 3 */ in setcolors()
414 reg_w(gspca_dev, 0x11, 0x01); in setcolors()
415 reg_w(gspca_dev, 0xff, 0x00); /* page 0 */ in setcolors()
419 reg_w(gspca_dev, 0x0f + 2 * i, (v >> 8) & 0x07); in setcolors()
420 reg_w(gspca_dev, 0x0f + 2 * i + 1, v); in setcolors()
422 reg_w(gspca_dev, 0xdc, 0x01); in setcolors()
425 static void setwhitebalance(struct gspca_dev *gspca_dev) in setwhitebalance() argument
427 struct sd *sd = (struct sd *) gspca_dev; in setwhitebalance()
429 reg_w(gspca_dev, 0xff, 0x00); /* page 0 */ in setwhitebalance()
430 reg_w(gspca_dev, 0xc6, sd->white_balance->val); in setwhitebalance()
432 reg_w(gspca_dev, 0xdc, 0x01); in setwhitebalance()
453 static void setredbalance(struct gspca_dev *gspca_dev) in setredbalance() argument
455 struct sd *sd = (struct sd *) gspca_dev; in setredbalance()
457 reg_w(gspca_dev, 0xff, 0x00); /* page 0 */ in setredbalance()
458 reg_w(gspca_dev, 0x01, in setredbalance()
461 reg_w(gspca_dev, 0xdc, 0x01); in setredbalance()
464 static void setbluebalance(struct gspca_dev *gspca_dev) in setbluebalance() argument
466 struct sd *sd = (struct sd *) gspca_dev; in setbluebalance()
468 reg_w(gspca_dev, 0xff, 0x00); /* page 0 */ in setbluebalance()
469 reg_w(gspca_dev, 0x03, in setbluebalance()
472 reg_w(gspca_dev, 0xdc, 0x01); in setbluebalance()
475 static void setgain(struct gspca_dev *gspca_dev) in setgain() argument
479 if (gspca_dev->gain->val < 32) { in setgain()
480 reg10 = gspca_dev->gain->val; in setgain()
484 reg12 = gspca_dev->gain->val - 31; in setgain()
487 reg_w(gspca_dev, 0xff, 0x03); /* page 3 */ in setgain()
488 reg_w(gspca_dev, 0x10, reg10); in setgain()
489 reg_w(gspca_dev, 0x12, reg12); in setgain()
492 reg_w(gspca_dev, 0x11, 0x01); in setgain()
495 static void setexposure(struct gspca_dev *gspca_dev) in setexposure() argument
505 clockdiv = (90 * gspca_dev->exposure->val + 1999) / 2000; in setexposure()
530 exposure = (gspca_dev->exposure->val * 45 * 448) / (1000 * clockdiv); in setexposure()
534 reg_w(gspca_dev, 0xff, 0x03); /* page 3 */ in setexposure()
535 reg_w(gspca_dev, 0x02, clockdiv); in setexposure()
536 reg_w(gspca_dev, 0x0e, exposure & 0xff); in setexposure()
537 reg_w(gspca_dev, 0x0f, exposure >> 8); in setexposure()
540 reg_w(gspca_dev, 0x11, 0x01); in setexposure()
543 static void sethvflip(struct gspca_dev *gspca_dev) in sethvflip() argument
545 struct sd *sd = (struct sd *) gspca_dev; in sethvflip()
555 reg_w(gspca_dev, 0xff, 0x03); /* page 3 */ in sethvflip()
557 reg_w(gspca_dev, 0x21, data); in sethvflip()
560 reg_w(gspca_dev, 0x11, 0x01); in sethvflip()
563 static void setsharpness(struct gspca_dev *gspca_dev) in setsharpness() argument
565 struct sd *sd = (struct sd *) gspca_dev; in setsharpness()
567 reg_w(gspca_dev, 0xff, 0x00); /* page 0 */ in setsharpness()
568 reg_w(gspca_dev, 0xb6, sd->sharpness->val); in setsharpness()
570 reg_w(gspca_dev, 0xdc, 0x01); in setsharpness()
574 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
576 reg_w_seq(gspca_dev, init_7302, sizeof(init_7302)/2); in sd_init()
577 return gspca_dev->usb_err; in sd_init()
582 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
583 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
584 struct sd *sd = (struct sd *)gspca_dev; in sd_s_ctrl()
586 gspca_dev->usb_err = 0; in sd_s_ctrl()
593 gspca_dev->exposure->val = PAC7302_EXPOSURE_DEFAULT; in sd_s_ctrl()
594 gspca_dev->gain->val = PAC7302_GAIN_DEFAULT; in sd_s_ctrl()
598 if (!gspca_dev->streaming) in sd_s_ctrl()
603 setbrightcont(gspca_dev); in sd_s_ctrl()
606 setcolors(gspca_dev); in sd_s_ctrl()
609 setwhitebalance(gspca_dev); in sd_s_ctrl()
612 setredbalance(gspca_dev); in sd_s_ctrl()
615 setbluebalance(gspca_dev); in sd_s_ctrl()
618 if (gspca_dev->exposure->is_new || (ctrl->is_new && ctrl->val)) in sd_s_ctrl()
619 setexposure(gspca_dev); in sd_s_ctrl()
620 if (gspca_dev->gain->is_new || (ctrl->is_new && ctrl->val)) in sd_s_ctrl()
621 setgain(gspca_dev); in sd_s_ctrl()
624 sethvflip(gspca_dev); in sd_s_ctrl()
627 setsharpness(gspca_dev); in sd_s_ctrl()
632 return gspca_dev->usb_err; in sd_s_ctrl()
640 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
642 struct sd *sd = (struct sd *) gspca_dev; in sd_init_controls()
643 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
645 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()
669 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
671 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
674 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
692 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); in sd_init_controls()
698 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
700 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
702 reg_w_var(gspca_dev, start_7302, in sd_start()
710 reg_w(gspca_dev, 0xff, 0x01); in sd_start()
711 reg_w(gspca_dev, 0x78, 0x01); in sd_start()
713 return gspca_dev->usb_err; in sd_start()
716 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
720 reg_w(gspca_dev, 0xff, 0x01); in sd_stopN()
721 reg_w(gspca_dev, 0x78, 0x00); in sd_stopN()
725 static void sd_stop0(struct gspca_dev *gspca_dev) in sd_stop0() argument
727 if (!gspca_dev->present) in sd_stop0()
729 reg_w(gspca_dev, 0xff, 0x01); in sd_stop0()
730 reg_w(gspca_dev, 0x78, 0x40); in sd_stop0()
733 static void do_autogain(struct gspca_dev *gspca_dev) in do_autogain() argument
735 struct sd *sd = (struct sd *) gspca_dev; in do_autogain()
748 if (gspca_expo_autogain(gspca_dev, avg_lum, desired_lum, in do_autogain()
781 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
785 struct sd *sd = (struct sd *) gspca_dev; in sd_pkt_scan()
789 sof = pac_find_sof(gspca_dev, &sd->sof_read, data, len); in sd_pkt_scan()
805 gspca_dev->image_len += n; in sd_pkt_scan()
808 gspca_frame_add(gspca_dev, INTER_PACKET, data, n); in sd_pkt_scan()
811 image = gspca_dev->image; in sd_pkt_scan()
813 && image[gspca_dev->image_len - 2] == 0xff in sd_pkt_scan()
814 && image[gspca_dev->image_len - 1] == 0xd9) in sd_pkt_scan()
815 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); in sd_pkt_scan()
822 if (gspca_dev->last_packet_type == LAST_PACKET && in sd_pkt_scan()
829 gspca_frame_add(gspca_dev, FIRST_PACKET, in sd_pkt_scan()
832 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()
836 static int sd_dbg_s_register(struct gspca_dev *gspca_dev, in sd_dbg_s_register() argument
860 reg_w(gspca_dev, 0xff, 0x00); /* page 0 */ in sd_dbg_s_register()
861 reg_w(gspca_dev, index, value); in sd_dbg_s_register()
863 reg_w(gspca_dev, 0xdc, 0x01); in sd_dbg_s_register()
865 return gspca_dev->usb_err; in sd_dbg_s_register()
870 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, in sd_int_pkt_scan() argument
888 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); in sd_int_pkt_scan()
889 input_sync(gspca_dev->input_dev); in sd_int_pkt_scan()
890 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); in sd_int_pkt_scan()
891 input_sync(gspca_dev->input_dev); in sd_int_pkt_scan()