Lines Matching refs:gspca_dev

37 	struct gspca_dev gspca_dev;	/* !! must be the first item */  member
425 static void reg_r(struct gspca_dev *gspca_dev, in reg_r() argument
430 if (gspca_dev->usb_err < 0) in reg_r()
432 ret = usb_control_msg(gspca_dev->dev, in reg_r()
433 usb_rcvctrlpipe(gspca_dev->dev, 0), in reg_r()
436 value, 0, gspca_dev->usb_buf, len, in reg_r()
440 gspca_dev->usb_err = ret; in reg_r()
444 static void reg_w(struct gspca_dev *gspca_dev, u16 value, u16 index) in reg_w() argument
448 if (gspca_dev->usb_err < 0) in reg_w()
451 ret = usb_control_msg(gspca_dev->dev, in reg_w()
452 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w()
460 gspca_dev->usb_err = ret; in reg_w()
464 static void reg_wb(struct gspca_dev *gspca_dev, u16 value, u16 index, in reg_wb() argument
469 if (gspca_dev->usb_err < 0) in reg_wb()
473 memcpy(gspca_dev->usb_buf, data, len); in reg_wb()
474 ret = usb_control_msg(gspca_dev->dev, in reg_wb()
475 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_wb()
478 value, index, gspca_dev->usb_buf, len, in reg_wb()
483 gspca_dev->usb_err = ret; in reg_wb()
491 struct gspca_dev *gspca_dev = &sd->gspca_dev; in i2c_write() local
497 if (gspca_dev->usb_err < 0) in i2c_write()
505 buf = gspca_dev->usb_buf; in i2c_write()
518 val, idx, gspca_dev->usb_buf[0], buf[-1]); in i2c_write()
519 ret = usb_control_msg(gspca_dev->dev, in i2c_write()
520 usb_sndctrlpipe(gspca_dev->dev, 0), in i2c_write()
524 gspca_dev->usb_buf, buf - gspca_dev->usb_buf, in i2c_write()
528 gspca_dev->usb_err = ret; in i2c_write()
532 static void ucbus_write(struct gspca_dev *gspca_dev, in ucbus_write() argument
541 if (gspca_dev->usb_err < 0) in ucbus_write()
546 gspca_dev->usb_err = -ENOMEM; in ucbus_write()
559 buf = gspca_dev->usb_buf; in ucbus_write()
566 if (buf != gspca_dev->usb_buf) in ucbus_write()
569 gspca_dev->usb_buf[0], buf[-1]); in ucbus_write()
573 ret = usb_control_msg(gspca_dev->dev, in ucbus_write()
574 usb_sndctrlpipe(gspca_dev->dev, 0), in ucbus_write()
578 gspca_dev->usb_buf, buf - gspca_dev->usb_buf, in ucbus_write()
582 gspca_dev->usb_err = ret; in ucbus_write()
594 struct gspca_dev *gspca_dev = &sd->gspca_dev; in gpio_set() local
599 reg_w(gspca_dev, 0x0100 | SQ930_CTRL_GPIO, in gpio_set()
607 reg_w(gspca_dev, 0x0300 | SQ930_CTRL_GPIO, in gpio_set()
628 ucbus_write(&sd->gspca_dev, &clkfreq_cmd, 1, 1); in bridge_init()
633 static void cmos_probe(struct gspca_dev *gspca_dev) in cmos_probe() argument
635 struct sd *sd = (struct sd *) gspca_dev; in cmos_probe()
648 ucbus_write(&sd->gspca_dev, sensor->cmd, sensor->cmd_len, 8); in cmos_probe()
651 reg_r(gspca_dev, (sensor->i2c_addr << 8) | 0x001c, 1); in cmos_probe()
653 if (gspca_dev->usb_buf[0] != 0) in cmos_probe()
658 gspca_dev->usb_err = -EINVAL; in cmos_probe()
667 gspca_dev->usb_err = -EINVAL; in cmos_probe()
672 static void mt9v111_init(struct gspca_dev *gspca_dev) in mt9v111_init() argument
686 reg_wb(gspca_dev, 0x001b, 0x0000, cmd_001b, sizeof cmd_001b); in mt9v111_init()
688 reg_wb(gspca_dev, 0x001b, 0x0000, cmd_011b[i], in mt9v111_init()
693 reg_r(gspca_dev, 0x031b, 1); in mt9v111_init()
694 if (gspca_dev->usb_buf[0] == 0 in mt9v111_init()
695 || gspca_dev->usb_err != 0) in mt9v111_init()
699 gspca_dev->usb_err = -ETIME; in mt9v111_init()
712 ucbus_write(&sd->gspca_dev, in global_init()
724 ucbus_write(&sd->gspca_dev, in global_init()
731 ucbus_write(&sd->gspca_dev, in global_init()
741 mt9v111_init(&sd->gspca_dev); in global_init()
755 ucbus_write(&sd->gspca_dev, cmds, ARRAY_SIZE(cmds), 2); in lz24bp_ppl()
758 static void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 gain) in setexposure() argument
760 struct sd *sd = (struct sd *) gspca_dev; in setexposure()
809 reg_wb(gspca_dev, cmd, 0, buf, i); in setexposure()
813 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
816 struct sd *sd = (struct sd *) gspca_dev; in sd_config()
817 struct cam *cam = &gspca_dev->cam; in sd_config()
831 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
833 struct sd *sd = (struct sd *) gspca_dev; in sd_init()
842 reg_r(gspca_dev, SQ930_CTRL_GET_DEV_INFO, 8); in sd_init()
843 if (gspca_dev->usb_err < 0) in sd_init()
844 return gspca_dev->usb_err; in sd_init()
864 PDEBUG(D_PROBE, "info: %*ph", 8, gspca_dev->usb_buf); in sd_init()
871 if (gspca_dev->usb_buf[5] == 0xf6) /* if ccd */ in sd_init()
874 cmos_probe(gspca_dev); in sd_init()
876 if (gspca_dev->usb_err >= 0) { in sd_init()
880 return gspca_dev->usb_err; in sd_init()
884 static void send_start(struct gspca_dev *gspca_dev) in send_start() argument
886 struct sd *sd = (struct sd *) gspca_dev; in send_start()
890 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; in send_start()
892 reg_wb(gspca_dev, 0x0900 | SQ930_CTRL_CAP_START, in send_start()
897 static void send_stop(struct gspca_dev *gspca_dev) in send_stop() argument
899 reg_w(gspca_dev, SQ930_CTRL_CAP_STOP, 0); in send_stop()
903 static int sd_isoc_init(struct gspca_dev *gspca_dev) in sd_isoc_init() argument
905 struct sd *sd = (struct sd *) gspca_dev; in sd_isoc_init()
907 gspca_dev->cam.bulk_nurbs = 1; /* there must be one URB only */ in sd_isoc_init()
909 gspca_dev->cam.bulk_size = gspca_dev->pixfmt.width * in sd_isoc_init()
910 gspca_dev->pixfmt.height + 8; in sd_isoc_init()
915 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
917 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
926 ucbus_write(gspca_dev, icx098bq_start_0, in sd_start()
929 ucbus_write(gspca_dev, icx098bq_start_1, in sd_start()
932 ucbus_write(gspca_dev, icx098bq_start_2, in sd_start()
938 send_start(gspca_dev); in sd_start()
941 reg_w(gspca_dev, SQ930_CTRL_CAP_STOP, 0x0000); in sd_start()
945 send_start(gspca_dev); in sd_start()
949 ucbus_write(gspca_dev, lz24bp_start_0, in sd_start()
953 ucbus_write(gspca_dev, lz24bp_start_1_gen, in sd_start()
957 ucbus_write(gspca_dev, lz24bp_start_1_clm, in sd_start()
960 ucbus_write(gspca_dev, lz24bp_start_2, in sd_start()
963 mode = gspca_dev->cam.cam_mode[gspca_dev->curr_mode].priv; in sd_start()
968 ucbus_write(gspca_dev, mi0360_start_0, in sd_start()
977 ucbus_write(gspca_dev, mi0360_start_1, in sd_start()
986 send_start(gspca_dev); in sd_start()
988 send_stop(gspca_dev); in sd_start()
995 ucbus_write(gspca_dev, mi0360_start_0, in sd_start()
1004 ucbus_write(gspca_dev, mt9v111_start_1, in sd_start()
1014 send_start(gspca_dev); in sd_start()
1023 return gspca_dev->usb_err; in sd_start()
1026 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
1028 struct sd *sd = (struct sd *) gspca_dev; in sd_stopN()
1032 send_stop(gspca_dev); in sd_stopN()
1037 static void sd_dq_callback(struct gspca_dev *gspca_dev) in sd_dq_callback() argument
1039 struct sd *sd = (struct sd *) gspca_dev; in sd_dq_callback()
1042 if (!sd->do_ctrl || gspca_dev->cam.bulk_nurbs != 0) in sd_dq_callback()
1046 setexposure(gspca_dev, v4l2_ctrl_g_ctrl(sd->exposure), in sd_dq_callback()
1049 gspca_dev->cam.bulk_nurbs = 1; in sd_dq_callback()
1050 ret = usb_submit_urb(gspca_dev->urb[0], GFP_ATOMIC); in sd_dq_callback()
1058 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
1062 struct sd *sd = (struct sd *) gspca_dev; in sd_pkt_scan()
1065 gspca_dev->cam.bulk_nurbs = 0; in sd_pkt_scan()
1066 gspca_frame_add(gspca_dev, FIRST_PACKET, NULL, 0); in sd_pkt_scan()
1067 gspca_frame_add(gspca_dev, INTER_PACKET, data, len - 8); in sd_pkt_scan()
1068 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); in sd_pkt_scan()
1073 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
1074 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
1075 struct sd *sd = (struct sd *) gspca_dev; in sd_s_ctrl()
1077 gspca_dev->usb_err = 0; in sd_s_ctrl()
1079 if (!gspca_dev->streaming) in sd_s_ctrl()
1084 setexposure(gspca_dev, ctrl->val, sd->gain->val); in sd_s_ctrl()
1087 return gspca_dev->usb_err; in sd_s_ctrl()
1094 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
1096 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
1097 struct sd *sd = (struct sd *) gspca_dev; in sd_init_controls()
1099 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()