• Home
  • Raw
  • Download

Lines Matching refs:gspca_dev

77 	struct gspca_dev gspca_dev;		/* !! must be the first item */  member
164 static void reg_w_buf(struct gspca_dev *gspca_dev, in reg_w_buf() argument
170 if (gspca_dev->usb_err < 0) in reg_w_buf()
172 memcpy(gspca_dev->usb_buf, buffer, len); in reg_w_buf()
173 ret = usb_control_msg(gspca_dev->dev, in reg_w_buf()
174 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w_buf()
178 index, gspca_dev->usb_buf, len, in reg_w_buf()
183 gspca_dev->usb_err = ret; in reg_w_buf()
188 static void reg_w(struct gspca_dev *gspca_dev, in reg_w() argument
194 if (gspca_dev->usb_err < 0) in reg_w()
196 gspca_dev->usb_buf[0] = value; in reg_w()
197 ret = usb_control_msg(gspca_dev->dev, in reg_w()
198 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w()
201 0, index, gspca_dev->usb_buf, 1, in reg_w()
206 gspca_dev->usb_err = ret; in reg_w()
210 static void reg_w_seq(struct gspca_dev *gspca_dev, in reg_w_seq() argument
214 reg_w(gspca_dev, seq[0], seq[1]); in reg_w_seq()
220 static void reg_w_page(struct gspca_dev *gspca_dev, in reg_w_page() argument
226 if (gspca_dev->usb_err < 0) in reg_w_page()
231 gspca_dev->usb_buf[0] = page[index]; in reg_w_page()
232 ret = usb_control_msg(gspca_dev->dev, in reg_w_page()
233 usb_sndctrlpipe(gspca_dev->dev, 0), in reg_w_page()
236 0, index, gspca_dev->usb_buf, 1, in reg_w_page()
241 gspca_dev->usb_err = ret; in reg_w_page()
248 static void reg_w_var(struct gspca_dev *gspca_dev, in reg_w_var() argument
261 reg_w_page(gspca_dev, page4, page4_len); in reg_w_var()
270 reg_w_buf(gspca_dev, in reg_w_var()
275 reg_w_buf(gspca_dev, index, seq, 8); in reg_w_var()
286 static int sd_config(struct gspca_dev *gspca_dev, in sd_config() argument
289 struct cam *cam = &gspca_dev->cam; in sd_config()
298 static void setcontrast(struct gspca_dev *gspca_dev, s32 val) in setcontrast() argument
300 reg_w(gspca_dev, 0xff, 0x04); in setcontrast()
301 reg_w(gspca_dev, 0x10, val); in setcontrast()
303 reg_w(gspca_dev, 0x11, 0x01); in setcontrast()
306 static void setgain(struct gspca_dev *gspca_dev, s32 val) in setgain() argument
308 reg_w(gspca_dev, 0xff, 0x04); /* page 4 */ in setgain()
309 reg_w(gspca_dev, 0x0e, 0x00); in setgain()
310 reg_w(gspca_dev, 0x0f, gspca_dev->gain->maximum - val + 1); in setgain()
313 reg_w(gspca_dev, 0x11, 0x01); in setgain()
316 static void setexposure(struct gspca_dev *gspca_dev, s32 val) in setexposure() argument
318 reg_w(gspca_dev, 0xff, 0x04); /* page 4 */ in setexposure()
319 reg_w(gspca_dev, 0x02, val); in setexposure()
322 reg_w(gspca_dev, 0x11, 0x01); in setexposure()
328 reg_w(gspca_dev, 0xff, 0x01); in setexposure()
329 if (gspca_dev->pixfmt.width != 640 && val <= 3) in setexposure()
330 reg_w(gspca_dev, 0x08, 0x09); in setexposure()
332 reg_w(gspca_dev, 0x08, 0x08); in setexposure()
340 if (gspca_dev->pixfmt.width == 640 && val == 2) in setexposure()
341 reg_w(gspca_dev, 0x80, 0x01); in setexposure()
343 reg_w(gspca_dev, 0x80, 0x1c); in setexposure()
346 reg_w(gspca_dev, 0x11, 0x01); in setexposure()
349 static void sethvflip(struct gspca_dev *gspca_dev, s32 hflip, s32 vflip) in sethvflip() argument
353 reg_w(gspca_dev, 0xff, 0x04); /* page 4 */ in sethvflip()
356 reg_w(gspca_dev, 0x21, data); in sethvflip()
359 reg_w(gspca_dev, 0x11, 0x01); in sethvflip()
363 static int sd_init(struct gspca_dev *gspca_dev) in sd_init() argument
365 reg_w_seq(gspca_dev, init_7311, sizeof(init_7311)/2); in sd_init()
366 return gspca_dev->usb_err; in sd_init()
371 struct gspca_dev *gspca_dev = in sd_s_ctrl() local
372 container_of(ctrl->handler, struct gspca_dev, ctrl_handler); in sd_s_ctrl()
373 struct sd *sd = (struct sd *)gspca_dev; in sd_s_ctrl()
375 gspca_dev->usb_err = 0; in sd_s_ctrl()
382 gspca_dev->exposure->val = PAC7311_EXPOSURE_DEFAULT; in sd_s_ctrl()
383 gspca_dev->gain->val = PAC7311_GAIN_DEFAULT; in sd_s_ctrl()
387 if (!gspca_dev->streaming) in sd_s_ctrl()
392 setcontrast(gspca_dev, ctrl->val); in sd_s_ctrl()
395 if (gspca_dev->exposure->is_new || (ctrl->is_new && ctrl->val)) in sd_s_ctrl()
396 setexposure(gspca_dev, gspca_dev->exposure->val); in sd_s_ctrl()
397 if (gspca_dev->gain->is_new || (ctrl->is_new && ctrl->val)) in sd_s_ctrl()
398 setgain(gspca_dev, gspca_dev->gain->val); in sd_s_ctrl()
401 sethvflip(gspca_dev, sd->hflip->val, 1); in sd_s_ctrl()
406 return gspca_dev->usb_err; in sd_s_ctrl()
414 static int sd_init_controls(struct gspca_dev *gspca_dev) in sd_init_controls() argument
416 struct sd *sd = (struct sd *) gspca_dev; in sd_init_controls()
417 struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler; in sd_init_controls()
419 gspca_dev->vdev.ctrl_handler = hdl; in sd_init_controls()
424 gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
426 gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
429 gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops, in sd_init_controls()
440 v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false); in sd_init_controls()
445 static int sd_start(struct gspca_dev *gspca_dev) in sd_start() argument
447 struct sd *sd = (struct sd *) gspca_dev; in sd_start()
451 reg_w_var(gspca_dev, start_7311, in sd_start()
453 setcontrast(gspca_dev, v4l2_ctrl_g_ctrl(sd->contrast)); in sd_start()
454 setgain(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->gain)); in sd_start()
455 setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure)); in sd_start()
456 sethvflip(gspca_dev, v4l2_ctrl_g_ctrl(sd->hflip), 1); in sd_start()
459 switch (gspca_dev->cam.cam_mode[(int) gspca_dev->curr_mode].priv) { in sd_start()
461 reg_w(gspca_dev, 0xff, 0x01); in sd_start()
462 reg_w(gspca_dev, 0x17, 0x20); in sd_start()
463 reg_w(gspca_dev, 0x87, 0x10); in sd_start()
466 reg_w(gspca_dev, 0xff, 0x01); in sd_start()
467 reg_w(gspca_dev, 0x17, 0x30); in sd_start()
468 reg_w(gspca_dev, 0x87, 0x11); in sd_start()
471 reg_w(gspca_dev, 0xff, 0x01); in sd_start()
472 reg_w(gspca_dev, 0x17, 0x00); in sd_start()
473 reg_w(gspca_dev, 0x87, 0x12); in sd_start()
482 reg_w(gspca_dev, 0xff, 0x01); in sd_start()
483 reg_w(gspca_dev, 0x78, 0x05); in sd_start()
485 return gspca_dev->usb_err; in sd_start()
488 static void sd_stopN(struct gspca_dev *gspca_dev) in sd_stopN() argument
490 reg_w(gspca_dev, 0xff, 0x04); in sd_stopN()
491 reg_w(gspca_dev, 0x27, 0x80); in sd_stopN()
492 reg_w(gspca_dev, 0x28, 0xca); in sd_stopN()
493 reg_w(gspca_dev, 0x29, 0x53); in sd_stopN()
494 reg_w(gspca_dev, 0x2a, 0x0e); in sd_stopN()
495 reg_w(gspca_dev, 0xff, 0x01); in sd_stopN()
496 reg_w(gspca_dev, 0x3e, 0x20); in sd_stopN()
497 reg_w(gspca_dev, 0x78, 0x44); /* Bit_0=start stream, Bit_6=LED */ in sd_stopN()
498 reg_w(gspca_dev, 0x78, 0x44); /* Bit_0=start stream, Bit_6=LED */ in sd_stopN()
499 reg_w(gspca_dev, 0x78, 0x44); /* Bit_0=start stream, Bit_6=LED */ in sd_stopN()
502 static void do_autogain(struct gspca_dev *gspca_dev) in do_autogain() argument
504 struct sd *sd = (struct sd *) gspca_dev; in do_autogain()
516 else if (gspca_coarse_grained_expo_autogain(gspca_dev, avg_lum, in do_autogain()
549 static void pac_start_frame(struct gspca_dev *gspca_dev, in pac_start_frame() argument
554 gspca_frame_add(gspca_dev, FIRST_PACKET, in pac_start_frame()
562 gspca_frame_add(gspca_dev, INTER_PACKET, in pac_start_frame()
564 gspca_frame_add(gspca_dev, INTER_PACKET, in pac_start_frame()
569 static void sd_pkt_scan(struct gspca_dev *gspca_dev, in sd_pkt_scan() argument
573 struct sd *sd = (struct sd *) gspca_dev; in sd_pkt_scan()
577 sof = pac_find_sof(gspca_dev, &sd->sof_read, data, len); in sd_pkt_scan()
593 gspca_dev->image_len += n; in sd_pkt_scan()
596 gspca_frame_add(gspca_dev, INTER_PACKET, data, n); in sd_pkt_scan()
598 image = gspca_dev->image; in sd_pkt_scan()
600 && image[gspca_dev->image_len - 2] == 0xff in sd_pkt_scan()
601 && image[gspca_dev->image_len - 1] == 0xd9) in sd_pkt_scan()
602 gspca_frame_add(gspca_dev, LAST_PACKET, NULL, 0); in sd_pkt_scan()
609 if (gspca_dev->last_packet_type == LAST_PACKET && in sd_pkt_scan()
617 pac_start_frame(gspca_dev, in sd_pkt_scan()
618 gspca_dev->pixfmt.height, gspca_dev->pixfmt.width); in sd_pkt_scan()
620 gspca_frame_add(gspca_dev, INTER_PACKET, data, len); in sd_pkt_scan()
624 static int sd_int_pkt_scan(struct gspca_dev *gspca_dev, in sd_int_pkt_scan() argument
642 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 1); in sd_int_pkt_scan()
643 input_sync(gspca_dev->input_dev); in sd_int_pkt_scan()
644 input_report_key(gspca_dev->input_dev, KEY_CAMERA, 0); in sd_int_pkt_scan()
645 input_sync(gspca_dev->input_dev); in sd_int_pkt_scan()