• Home
  • Raw
  • Download

Lines Matching refs:cam

50 #define FRAME_SIZE_PER_DESC   frame_sizes[cam->cur_alt]
52 static void process_frame(struct camera_data *cam);
60 static void free_sbufs(struct camera_data *cam);
61 static void add_APPn(struct camera_data *cam);
62 static void add_COM(struct camera_data *cam);
63 static int submit_urbs(struct camera_data *cam);
64 static int set_alternate(struct camera_data *cam, unsigned int alt);
65 static int configure_transfer_mode(struct camera_data *cam, unsigned int alt);
91 static void process_frame(struct camera_data *cam) in process_frame() argument
95 unsigned char *inbuff = cam->workbuff->data; in process_frame()
98 cam->workbuff->num, cam->curbuff->num); in process_frame()
100 if(cam->workbuff->length > cam->workbuff->max_length) in process_frame()
101 cam->workbuff->max_length = cam->workbuff->length; in process_frame()
106 cam->workbuff->status = FRAME_ERROR; in process_frame()
114 if(!cam->first_image_seen) { in process_frame()
117 cam->first_image_seen = 1; in process_frame()
118 cam->workbuff->status = FRAME_EMPTY; in process_frame()
121 if (cam->workbuff->length > 3) { in process_frame()
122 if(cam->mmapped && in process_frame()
123 cam->workbuff->length < cam->workbuff->max_length) { in process_frame()
125 memset(cam->workbuff->data+cam->workbuff->length, in process_frame()
126 0, cam->workbuff->max_length- in process_frame()
127 cam->workbuff->length); in process_frame()
129 cam->workbuff->max_length = cam->workbuff->length; in process_frame()
130 cam->workbuff->status = FRAME_READY; in process_frame()
132 if(!cam->mmapped && cam->num_frames > 2) { in process_frame()
149 cam->curbuff->status = FRAME_EMPTY; in process_frame()
151 cam->curbuff = cam->workbuff; in process_frame()
152 cam->workbuff = cam->workbuff->next; in process_frame()
154 cam->workbuff->num, cam->curbuff->num); in process_frame()
160 cam->workbuff->status = FRAME_ERROR; in process_frame()
170 static void add_APPn(struct camera_data *cam) in add_APPn() argument
172 if(cam->APP_len > 0) { in add_APPn()
173 cam->workbuff->data[cam->workbuff->length++] = 0xFF; in add_APPn()
174 cam->workbuff->data[cam->workbuff->length++] = 0xE0+cam->APPn; in add_APPn()
175 cam->workbuff->data[cam->workbuff->length++] = 0; in add_APPn()
176 cam->workbuff->data[cam->workbuff->length++] = cam->APP_len+2; in add_APPn()
177 memcpy(cam->workbuff->data+cam->workbuff->length, in add_APPn()
178 cam->APP_data, cam->APP_len); in add_APPn()
179 cam->workbuff->length += cam->APP_len; in add_APPn()
189 static void add_COM(struct camera_data *cam) in add_COM() argument
191 if(cam->COM_len > 0) { in add_COM()
192 cam->workbuff->data[cam->workbuff->length++] = 0xFF; in add_COM()
193 cam->workbuff->data[cam->workbuff->length++] = 0xFE; in add_COM()
194 cam->workbuff->data[cam->workbuff->length++] = 0; in add_COM()
195 cam->workbuff->data[cam->workbuff->length++] = cam->COM_len+2; in add_COM()
196 memcpy(cam->workbuff->data+cam->workbuff->length, in add_COM()
197 cam->COM_data, cam->COM_len); in add_COM()
198 cam->workbuff->length += cam->COM_len; in add_COM()
213 struct camera_data *cam = (struct camera_data *) urb->context; in cpia2_usb_complete() local
226 if (!cam->streaming || !video_is_registered(&cam->vdev)) { in cpia2_usb_complete()
228 cam->streaming, video_is_registered(&cam->vdev)); in cpia2_usb_complete()
242 if(cam->workbuff->status == FRAME_READY) { in cpia2_usb_complete()
246 for (ptr = cam->workbuff->next; in cpia2_usb_complete()
247 ptr != cam->workbuff; in cpia2_usb_complete()
256 if (ptr == cam->workbuff) in cpia2_usb_complete()
259 cam->workbuff = ptr; in cpia2_usb_complete()
262 if (cam->workbuff->status == FRAME_EMPTY || in cpia2_usb_complete()
263 cam->workbuff->status == FRAME_ERROR) { in cpia2_usb_complete()
264 cam->workbuff->status = FRAME_READING; in cpia2_usb_complete()
265 cam->workbuff->length = 0; in cpia2_usb_complete()
275 cam->workbuff->status = FRAME_ERROR; in cpia2_usb_complete()
290 cam->workbuff->status = FRAME_ERROR; in cpia2_usb_complete()
296 if(cam->workbuff->status != FRAME_READING) { in cpia2_usb_complete()
302 cam->frame_count++; in cpia2_usb_complete()
305 cam->workbuff->status); in cpia2_usb_complete()
309 if (cam->frame_size < cam->workbuff->length + n) { in cpia2_usb_complete()
311 cam->workbuff->length, n); in cpia2_usb_complete()
312 cam->workbuff->status = FRAME_ERROR; in cpia2_usb_complete()
313 if(cam->workbuff->length > cam->workbuff->max_length) in cpia2_usb_complete()
314 cam->workbuff->max_length = in cpia2_usb_complete()
315 cam->workbuff->length; in cpia2_usb_complete()
319 if (cam->workbuff->length == 0) { in cpia2_usb_complete()
331 v4l2_get_timestamp(&cam->workbuff->timestamp); in cpia2_usb_complete()
332 cam->workbuff->seq = cam->frame_count++; in cpia2_usb_complete()
333 cam->workbuff->data[0] = 0xFF; in cpia2_usb_complete()
334 cam->workbuff->data[1] = 0xD8; in cpia2_usb_complete()
335 cam->workbuff->length = 2; in cpia2_usb_complete()
336 add_APPn(cam); in cpia2_usb_complete()
337 add_COM(cam); in cpia2_usb_complete()
338 memcpy(cam->workbuff->data+cam->workbuff->length, in cpia2_usb_complete()
340 cam->workbuff->length += n-data_offset; in cpia2_usb_complete()
341 } else if (cam->workbuff->length > 0) { in cpia2_usb_complete()
342 memcpy(cam->workbuff->data + cam->workbuff->length, in cpia2_usb_complete()
344 cam->workbuff->length += n; in cpia2_usb_complete()
347 if ((cam->workbuff->length >= 3) && in cpia2_usb_complete()
348 (cam->workbuff->data[cam->workbuff->length - 3] == 0xFF) && in cpia2_usb_complete()
349 (cam->workbuff->data[cam->workbuff->length - 2] == 0xD9) && in cpia2_usb_complete()
350 (cam->workbuff->data[cam->workbuff->length - 1] == 0xFF)) { in cpia2_usb_complete()
352 cam->workbuff->data[cam->workbuff->length - 1] = 0; in cpia2_usb_complete()
353 cam->workbuff->length -= 1; in cpia2_usb_complete()
354 } else if ((cam->workbuff->length >= 2) && in cpia2_usb_complete()
355 (cam->workbuff->data[cam->workbuff->length - 2] == 0xFF) && in cpia2_usb_complete()
356 (cam->workbuff->data[cam->workbuff->length - 1] == 0xD9)) { in cpia2_usb_complete()
361 DBG("Workbuff image size = %d\n",cam->workbuff->length); in cpia2_usb_complete()
362 process_frame(cam); in cpia2_usb_complete()
366 if (waitqueue_active(&cam->wq_stream)) in cpia2_usb_complete()
367 wake_up_interruptible(&cam->wq_stream); in cpia2_usb_complete()
371 if(cam->streaming) { in cpia2_usb_complete()
373 urb->dev = cam->dev; in cpia2_usb_complete()
384 static int configure_transfer_mode(struct camera_data *cam, unsigned int alt) in configure_transfer_mode() argument
399 if (!video_is_registered(&cam->vdev)) in configure_transfer_mode()
413 cpia2_send_command(cam, &cmd); in configure_transfer_mode()
423 cpia2_send_command(cam, &cmd); in configure_transfer_mode()
434 cam->xfer_mode = XFER_BULK; in configure_transfer_mode()
438 cam->xfer_mode = XFER_ISOC; in configure_transfer_mode()
446 cpia2_send_command(cam, &cmd); in configure_transfer_mode()
456 int cpia2_usb_change_streaming_alternate(struct camera_data *cam, in cpia2_usb_change_streaming_alternate() argument
464 if(alt == cam->params.camera_state.stream_mode) in cpia2_usb_change_streaming_alternate()
467 cpia2_usb_stream_pause(cam); in cpia2_usb_change_streaming_alternate()
469 configure_transfer_mode(cam, alt); in cpia2_usb_change_streaming_alternate()
471 cam->params.camera_state.stream_mode = alt; in cpia2_usb_change_streaming_alternate()
474 cpia2_reset_camera(cam); in cpia2_usb_change_streaming_alternate()
476 cpia2_usb_stream_resume(cam); in cpia2_usb_change_streaming_alternate()
486 static int set_alternate(struct camera_data *cam, unsigned int alt) in set_alternate() argument
490 if(alt == cam->cur_alt) in set_alternate()
493 if (cam->cur_alt != USBIF_CMDONLY) { in set_alternate()
494 DBG("Changing from alt %d to %d\n", cam->cur_alt, USBIF_CMDONLY); in set_alternate()
495 ret = usb_set_interface(cam->dev, cam->iface, USBIF_CMDONLY); in set_alternate()
501 ret = usb_set_interface(cam->dev, cam->iface, alt); in set_alternate()
506 cam->old_alt = cam->cur_alt; in set_alternate()
507 cam->cur_alt = alt; in set_alternate()
520 static void free_sbufs(struct camera_data *cam) in free_sbufs() argument
525 if(cam->sbuf[i].urb) { in free_sbufs()
526 usb_kill_urb(cam->sbuf[i].urb); in free_sbufs()
527 usb_free_urb(cam->sbuf[i].urb); in free_sbufs()
528 cam->sbuf[i].urb = NULL; in free_sbufs()
530 if(cam->sbuf[i].data) { in free_sbufs()
531 kfree(cam->sbuf[i].data); in free_sbufs()
532 cam->sbuf[i].data = NULL; in free_sbufs()
589 int cpia2_usb_transfer_cmd(struct camera_data *cam, in cpia2_usb_transfer_cmd() argument
594 struct usb_device *udev = cam->dev; in cpia2_usb_transfer_cmd()
637 static int submit_urbs(struct camera_data *cam) in submit_urbs() argument
643 if (cam->sbuf[i].data) in submit_urbs()
645 cam->sbuf[i].data = in submit_urbs()
647 if (!cam->sbuf[i].data) { in submit_urbs()
649 kfree(cam->sbuf[i].data); in submit_urbs()
650 cam->sbuf[i].data = NULL; in submit_urbs()
660 if(cam->sbuf[i].urb) { in submit_urbs()
667 usb_free_urb(cam->sbuf[j].urb); in submit_urbs()
671 cam->sbuf[i].urb = urb; in submit_urbs()
672 urb->dev = cam->dev; in submit_urbs()
673 urb->context = cam; in submit_urbs()
674 urb->pipe = usb_rcvisocpipe(cam->dev, 1 /*ISOC endpoint*/); in submit_urbs()
676 urb->transfer_buffer = cam->sbuf[i].data; in submit_urbs()
693 err = usb_submit_urb(cam->sbuf[i].urb, GFP_KERNEL); in submit_urbs()
708 int cpia2_usb_stream_start(struct camera_data *cam, unsigned int alternate) in cpia2_usb_stream_start() argument
713 if(cam->streaming) in cpia2_usb_stream_start()
716 if (cam->flush) { in cpia2_usb_stream_start()
719 for(i=0; i<cam->num_frames; ++i) { in cpia2_usb_stream_start()
720 cam->buffers[i].status = FRAME_EMPTY; in cpia2_usb_stream_start()
721 cam->buffers[i].length = 0; in cpia2_usb_stream_start()
723 cam->curbuff = &cam->buffers[0]; in cpia2_usb_stream_start()
724 cam->workbuff = cam->curbuff->next; in cpia2_usb_stream_start()
725 cam->flush = false; in cpia2_usb_stream_start()
728 old_alt = cam->params.camera_state.stream_mode; in cpia2_usb_stream_start()
729 cam->params.camera_state.stream_mode = 0; in cpia2_usb_stream_start()
730 ret = cpia2_usb_change_streaming_alternate(cam, alternate); in cpia2_usb_stream_start()
734 cam->params.camera_state.stream_mode = old_alt; in cpia2_usb_stream_start()
735 ret2 = set_alternate(cam, USBIF_CMDONLY); in cpia2_usb_stream_start()
743 cam->frame_count = 0; in cpia2_usb_stream_start()
744 cam->streaming = 1; in cpia2_usb_stream_start()
745 ret = cpia2_usb_stream_resume(cam); in cpia2_usb_stream_start()
755 int cpia2_usb_stream_pause(struct camera_data *cam) in cpia2_usb_stream_pause() argument
758 if(cam->streaming) { in cpia2_usb_stream_pause()
759 free_sbufs(cam); in cpia2_usb_stream_pause()
760 ret = set_alternate(cam, USBIF_CMDONLY); in cpia2_usb_stream_pause()
770 int cpia2_usb_stream_resume(struct camera_data *cam) in cpia2_usb_stream_resume() argument
773 if(cam->streaming) { in cpia2_usb_stream_resume()
774 cam->first_image_seen = 0; in cpia2_usb_stream_resume()
775 ret = set_alternate(cam, cam->params.camera_state.stream_mode); in cpia2_usb_stream_resume()
779 cpia2_do_command(cam, CPIA2_CMD_SET_USER_EFFECTS, TRANSFER_WRITE, in cpia2_usb_stream_resume()
780 cam->params.vp_params.user_effects); in cpia2_usb_stream_resume()
781 ret = submit_urbs(cam); in cpia2_usb_stream_resume()
792 int cpia2_usb_stream_stop(struct camera_data *cam) in cpia2_usb_stream_stop() argument
796 ret = cpia2_usb_stream_pause(cam); in cpia2_usb_stream_stop()
797 cam->streaming = 0; in cpia2_usb_stream_stop()
798 configure_transfer_mode(cam, 0); in cpia2_usb_stream_stop()
813 struct camera_data *cam; in cpia2_usb_probe() local
824 cam = cpia2_init_camera_struct(intf); in cpia2_usb_probe()
825 if (cam == NULL) in cpia2_usb_probe()
828 cam->dev = udev; in cpia2_usb_probe()
829 cam->iface = interface->bInterfaceNumber; in cpia2_usb_probe()
831 ret = set_alternate(cam, USBIF_CMDONLY); in cpia2_usb_probe()
834 kfree(cam); in cpia2_usb_probe()
839 if((ret = cpia2_init_camera(cam)) < 0) { in cpia2_usb_probe()
841 kfree(cam); in cpia2_usb_probe()
845 cam->params.version.firmware_revision_hi, in cpia2_usb_probe()
846 cam->params.version.firmware_revision_lo, in cpia2_usb_probe()
847 cam->params.version.asic_id, in cpia2_usb_probe()
848 cam->params.version.asic_rev); in cpia2_usb_probe()
850 cam->params.pnp_id.vendor, in cpia2_usb_probe()
851 cam->params.pnp_id.product, in cpia2_usb_probe()
852 cam->params.pnp_id.device_revision); in cpia2_usb_probe()
854 cam->params.version.sensor_flags, in cpia2_usb_probe()
855 cam->params.version.sensor_rev); in cpia2_usb_probe()
857 usb_set_intfdata(intf, cam); in cpia2_usb_probe()
859 ret = cpia2_register_camera(cam); in cpia2_usb_probe()
862 kfree(cam); in cpia2_usb_probe()
876 struct camera_data *cam = usb_get_intfdata(intf); in cpia2_usb_disconnect() local
880 cpia2_usb_stream_stop(cam); in cpia2_usb_disconnect()
882 mutex_lock(&cam->v4l2_lock); in cpia2_usb_disconnect()
884 cpia2_unregister_camera(cam); in cpia2_usb_disconnect()
885 v4l2_device_disconnect(&cam->v4l2_dev); in cpia2_usb_disconnect()
886 mutex_unlock(&cam->v4l2_lock); in cpia2_usb_disconnect()
887 v4l2_device_put(&cam->v4l2_dev); in cpia2_usb_disconnect()
889 if(cam->buffers) { in cpia2_usb_disconnect()
891 cam->curbuff->status = FRAME_READY; in cpia2_usb_disconnect()
892 cam->curbuff->length = 0; in cpia2_usb_disconnect()
893 if (waitqueue_active(&cam->wq_stream)) in cpia2_usb_disconnect()
894 wake_up_interruptible(&cam->wq_stream); in cpia2_usb_disconnect()
905 struct camera_data *cam = usb_get_intfdata(intf); in cpia2_usb_suspend() local
907 mutex_lock(&cam->v4l2_lock); in cpia2_usb_suspend()
908 if (cam->streaming) { in cpia2_usb_suspend()
909 cpia2_usb_stream_stop(cam); in cpia2_usb_suspend()
910 cam->streaming = 1; in cpia2_usb_suspend()
912 mutex_unlock(&cam->v4l2_lock); in cpia2_usb_suspend()
921 struct camera_data *cam = usb_get_intfdata(intf); in cpia2_usb_resume() local
923 mutex_lock(&cam->v4l2_lock); in cpia2_usb_resume()
924 v4l2_ctrl_handler_setup(&cam->hdl); in cpia2_usb_resume()
925 if (cam->streaming) { in cpia2_usb_resume()
926 cam->streaming = 0; in cpia2_usb_resume()
927 cpia2_usb_stream_start(cam, in cpia2_usb_resume()
928 cam->params.camera_state.stream_mode); in cpia2_usb_resume()
930 mutex_unlock(&cam->v4l2_lock); in cpia2_usb_resume()