Lines Matching refs:usbvision

119 static void usbvision_release(struct usb_usbvision *usbvision);
182 struct usb_usbvision *usbvision = video_get_drvdata(vdev); in show_model() local
184 usbvision_device_data[usbvision->dev_model].model_string); in show_model()
193 struct usb_usbvision *usbvision = video_get_drvdata(vdev); in show_hue() local
197 if (usbvision->user) in show_hue()
198 call_all(usbvision, core, g_ctrl, &ctrl); in show_hue()
208 struct usb_usbvision *usbvision = video_get_drvdata(vdev); in show_contrast() local
212 if (usbvision->user) in show_contrast()
213 call_all(usbvision, core, g_ctrl, &ctrl); in show_contrast()
223 struct usb_usbvision *usbvision = video_get_drvdata(vdev); in show_brightness() local
227 if (usbvision->user) in show_brightness()
228 call_all(usbvision, core, g_ctrl, &ctrl); in show_brightness()
238 struct usb_usbvision *usbvision = video_get_drvdata(vdev); in show_saturation() local
242 if (usbvision->user) in show_saturation()
243 call_all(usbvision, core, g_ctrl, &ctrl); in show_saturation()
253 struct usb_usbvision *usbvision = video_get_drvdata(vdev); in show_streaming() local
255 YES_NO(usbvision->streaming == stream_on ? 1 : 0)); in show_streaming()
264 struct usb_usbvision *usbvision = video_get_drvdata(vdev); in show_compression() local
266 YES_NO(usbvision->isoc_mode == ISOC_MODE_COMPRESS)); in show_compression()
275 struct usb_usbvision *usbvision = video_get_drvdata(vdev); in show_device_bridge() local
276 return sprintf(buf, "%d\n", usbvision->bridge_type); in show_device_bridge()
344 struct usb_usbvision *usbvision = video_drvdata(file); in usbvision_v4l2_open() local
349 if (mutex_lock_interruptible(&usbvision->v4l2_lock)) in usbvision_v4l2_open()
352 if (usbvision->user) { in usbvision_v4l2_open()
360 err_code = usbvision_scratch_alloc(usbvision); in usbvision_v4l2_open()
364 err_code = usbvision_decompress_alloc(usbvision); in usbvision_v4l2_open()
368 usbvision_scratch_free(usbvision); in usbvision_v4l2_open()
369 usbvision_decompress_free(usbvision); in usbvision_v4l2_open()
376 if (!usbvision->initialized) { in usbvision_v4l2_open()
378 setup_ok = usbvision_setup(usbvision, isoc_mode); in usbvision_v4l2_open()
380 usbvision->initialized = 1; in usbvision_v4l2_open()
386 usbvision_begin_streaming(usbvision); in usbvision_v4l2_open()
387 err_code = usbvision_init_isoc(usbvision); in usbvision_v4l2_open()
389 usbvision_muxsel(usbvision, 0); in usbvision_v4l2_open()
392 usbvision_empty_framequeues(usbvision); in usbvision_v4l2_open()
393 usbvision->user++; in usbvision_v4l2_open()
398 mutex_unlock(&usbvision->v4l2_lock); in usbvision_v4l2_open()
414 struct usb_usbvision *usbvision = video_drvdata(file); in usbvision_v4l2_close() local
418 mutex_lock(&usbvision->v4l2_lock); in usbvision_v4l2_close()
419 usbvision_audio_off(usbvision); in usbvision_v4l2_close()
420 usbvision_restart_isoc(usbvision); in usbvision_v4l2_close()
421 usbvision_stop_isoc(usbvision); in usbvision_v4l2_close()
423 usbvision_decompress_free(usbvision); in usbvision_v4l2_close()
424 usbvision_frames_free(usbvision); in usbvision_v4l2_close()
425 usbvision_empty_framequeues(usbvision); in usbvision_v4l2_close()
426 usbvision_scratch_free(usbvision); in usbvision_v4l2_close()
428 usbvision->user--; in usbvision_v4l2_close()
429 mutex_unlock(&usbvision->v4l2_lock); in usbvision_v4l2_close()
431 if (usbvision->remove_pending) { in usbvision_v4l2_close()
433 usbvision_release(usbvision); in usbvision_v4l2_close()
452 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_g_register() local
456 err_code = usbvision_read_reg(usbvision, reg->reg&0xff); in vidioc_g_register()
458 dev_err(&usbvision->vdev.dev, in vidioc_g_register()
471 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_s_register() local
475 err_code = usbvision_write_reg(usbvision, reg->reg & 0xff, reg->val); in vidioc_s_register()
477 dev_err(&usbvision->vdev.dev, in vidioc_s_register()
489 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_querycap() local
494 usbvision_device_data[usbvision->dev_model].model_string, in vidioc_querycap()
496 usb_make_path(usbvision->dev, vc->bus_info, sizeof(vc->bus_info)); in vidioc_querycap()
497 vc->device_caps = usbvision->have_tuner ? V4L2_CAP_TUNER : 0; in vidioc_querycap()
506 if (usbvision_device_data[usbvision->dev_model].radio) in vidioc_querycap()
514 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_enum_input() local
517 if (vi->index >= usbvision->video_inputs) in vidioc_enum_input()
519 if (usbvision->have_tuner) in vidioc_enum_input()
528 if (usbvision_device_data[usbvision->dev_model].video_channels == 4) { in vidioc_enum_input()
539 if (usbvision_device_data[usbvision->dev_model].video_channels == 4) in vidioc_enum_input()
547 if (usbvision_device_data[usbvision->dev_model].video_channels == 4) in vidioc_enum_input()
564 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_g_input() local
566 *input = usbvision->ctl_input; in vidioc_g_input()
572 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_s_input() local
574 if (input >= usbvision->video_inputs) in vidioc_s_input()
577 usbvision_muxsel(usbvision, input); in vidioc_s_input()
578 usbvision_set_input(usbvision); in vidioc_s_input()
579 usbvision_set_output(usbvision, in vidioc_s_input()
580 usbvision->curwidth, in vidioc_s_input()
581 usbvision->curheight); in vidioc_s_input()
587 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_s_std() local
589 usbvision->tvnorm_id = id; in vidioc_s_std()
591 call_all(usbvision, video, s_std, usbvision->tvnorm_id); in vidioc_s_std()
593 usbvision_muxsel(usbvision, usbvision->ctl_input); in vidioc_s_std()
600 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_g_std() local
602 *id = usbvision->tvnorm_id; in vidioc_g_std()
609 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_g_tuner() local
619 call_all(usbvision, tuner, g_tuner, vt); in vidioc_g_tuner()
627 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_s_tuner() local
633 call_all(usbvision, tuner, s_tuner, vt); in vidioc_s_tuner()
641 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_g_frequency() local
647 freq->frequency = usbvision->radio_freq; in vidioc_g_frequency()
649 freq->frequency = usbvision->tv_freq; in vidioc_g_frequency()
657 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_s_frequency() local
664 call_all(usbvision, tuner, s_frequency, freq); in vidioc_s_frequency()
665 call_all(usbvision, tuner, g_frequency, &new_freq); in vidioc_s_frequency()
667 usbvision->radio_freq = new_freq.frequency; in vidioc_s_frequency()
669 usbvision->tv_freq = new_freq.frequency; in vidioc_s_frequency()
677 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_reqbufs() local
687 if (usbvision->streaming == stream_on) { in vidioc_reqbufs()
688 ret = usbvision_stream_interrupt(usbvision); in vidioc_reqbufs()
693 usbvision_frames_free(usbvision); in vidioc_reqbufs()
694 usbvision_empty_framequeues(usbvision); in vidioc_reqbufs()
695 vr->count = usbvision_frames_alloc(usbvision, vr->count); in vidioc_reqbufs()
697 usbvision->cur_frame = NULL; in vidioc_reqbufs()
705 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_querybuf() local
710 if (vb->index >= usbvision->num_frames) in vidioc_querybuf()
714 frame = &usbvision->frame[vb->index]; in vidioc_querybuf()
723 vb->m.offset = vb->index * PAGE_ALIGN(usbvision->max_frame_size); in vidioc_querybuf()
727 vb->length = usbvision->curwidth * in vidioc_querybuf()
728 usbvision->curheight * in vidioc_querybuf()
729 usbvision->palette.bytes_per_pixel; in vidioc_querybuf()
730 vb->timestamp = usbvision->frame[vb->index].timestamp; in vidioc_querybuf()
731 vb->sequence = usbvision->frame[vb->index].sequence; in vidioc_querybuf()
737 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_qbuf() local
742 if (vb->index >= usbvision->num_frames) in vidioc_qbuf()
745 frame = &usbvision->frame[vb->index]; in vidioc_qbuf()
758 frame->v4l2_format = usbvision->palette; in vidioc_qbuf()
760 spin_lock_irqsave(&usbvision->queue_lock, lock_flags); in vidioc_qbuf()
761 list_add_tail(&usbvision->frame[vb->index].frame, &usbvision->inqueue); in vidioc_qbuf()
762 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags); in vidioc_qbuf()
769 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_dqbuf() local
774 if (list_empty(&(usbvision->outqueue))) { in vidioc_dqbuf()
775 if (usbvision->streaming == stream_idle) in vidioc_dqbuf()
778 (usbvision->wait_frame, in vidioc_dqbuf()
779 !list_empty(&(usbvision->outqueue))); in vidioc_dqbuf()
784 spin_lock_irqsave(&usbvision->queue_lock, lock_flags); in vidioc_dqbuf()
785 f = list_entry(usbvision->outqueue.next, in vidioc_dqbuf()
787 list_del(usbvision->outqueue.next); in vidioc_dqbuf()
788 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags); in vidioc_dqbuf()
808 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_streamon() local
810 usbvision->streaming = stream_on; in vidioc_streamon()
811 call_all(usbvision, video, s_stream, 1); in vidioc_streamon()
819 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_streamoff() local
824 if (usbvision->streaming == stream_on) { in vidioc_streamoff()
825 usbvision_stream_interrupt(usbvision); in vidioc_streamoff()
827 call_all(usbvision, video, s_stream, 0); in vidioc_streamoff()
829 usbvision_empty_framequeues(usbvision); in vidioc_streamoff()
847 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_g_fmt_vid_cap() local
848 vf->fmt.pix.width = usbvision->curwidth; in vidioc_g_fmt_vid_cap()
849 vf->fmt.pix.height = usbvision->curheight; in vidioc_g_fmt_vid_cap()
850 vf->fmt.pix.pixelformat = usbvision->palette.format; in vidioc_g_fmt_vid_cap()
852 usbvision->curwidth * usbvision->palette.bytes_per_pixel; in vidioc_g_fmt_vid_cap()
853 vf->fmt.pix.sizeimage = vf->fmt.pix.bytesperline * usbvision->curheight; in vidioc_g_fmt_vid_cap()
863 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_try_fmt_vid_cap() local
870 usbvision->palette = usbvision_v4l2_format[format_idx]; in vidioc_try_fmt_vid_cap()
881 usbvision->palette.bytes_per_pixel; in vidioc_try_fmt_vid_cap()
892 struct usb_usbvision *usbvision = video_drvdata(file); in vidioc_s_fmt_vid_cap() local
900 if (usbvision->streaming == stream_on) { in vidioc_s_fmt_vid_cap()
901 ret = usbvision_stream_interrupt(usbvision); in vidioc_s_fmt_vid_cap()
905 usbvision_frames_free(usbvision); in vidioc_s_fmt_vid_cap()
906 usbvision_empty_framequeues(usbvision); in vidioc_s_fmt_vid_cap()
908 usbvision->cur_frame = NULL; in vidioc_s_fmt_vid_cap()
911 usbvision_set_output(usbvision, vf->fmt.pix.width, vf->fmt.pix.height); in vidioc_s_fmt_vid_cap()
919 struct usb_usbvision *usbvision = video_drvdata(file); in usbvision_read() local
928 if (!USBVISION_IS_OPERATIONAL(usbvision) || (buf == NULL)) in usbvision_read()
934 if (!usbvision->num_frames) { in usbvision_read()
937 usbvision_frames_free(usbvision); in usbvision_read()
938 usbvision_empty_framequeues(usbvision); in usbvision_read()
939 usbvision_frames_alloc(usbvision, USBVISION_NUMFRAMES); in usbvision_read()
942 if (usbvision->streaming != stream_on) { in usbvision_read()
944 usbvision->streaming = stream_on; in usbvision_read()
945 call_all(usbvision, video, s_stream, 1); in usbvision_read()
950 for (i = 0; i < usbvision->num_frames; i++) { in usbvision_read()
951 frame = &usbvision->frame[i]; in usbvision_read()
960 frame->v4l2_format = usbvision->palette; in usbvision_read()
962 spin_lock_irqsave(&usbvision->queue_lock, lock_flags); in usbvision_read()
963 list_add_tail(&frame->frame, &usbvision->inqueue); in usbvision_read()
964 spin_unlock_irqrestore(&usbvision->queue_lock, in usbvision_read()
970 if (list_empty(&(usbvision->outqueue))) { in usbvision_read()
975 (usbvision->wait_frame, in usbvision_read()
976 !list_empty(&(usbvision->outqueue))); in usbvision_read()
981 spin_lock_irqsave(&usbvision->queue_lock, lock_flags); in usbvision_read()
982 frame = list_entry(usbvision->outqueue.next, in usbvision_read()
984 list_del(usbvision->outqueue.next); in usbvision_read()
985 spin_unlock_irqrestore(&usbvision->queue_lock, lock_flags); in usbvision_read()
1034 struct usb_usbvision *usbvision = video_drvdata(file); in usbvision_v4l2_read() local
1037 if (mutex_lock_interruptible(&usbvision->v4l2_lock)) in usbvision_v4l2_read()
1040 mutex_unlock(&usbvision->v4l2_lock); in usbvision_v4l2_read()
1050 struct usb_usbvision *usbvision = video_drvdata(file); in usbvision_mmap() local
1054 if (!USBVISION_IS_OPERATIONAL(usbvision)) in usbvision_mmap()
1058 size != PAGE_ALIGN(usbvision->max_frame_size)) { in usbvision_mmap()
1062 for (i = 0; i < usbvision->num_frames; i++) { in usbvision_mmap()
1063 if (((PAGE_ALIGN(usbvision->max_frame_size)*i) >> PAGE_SHIFT) == in usbvision_mmap()
1067 if (i == usbvision->num_frames) { in usbvision_mmap()
1076 pos = usbvision->frame[i].data; in usbvision_mmap()
1092 struct usb_usbvision *usbvision = video_drvdata(file); in usbvision_v4l2_mmap() local
1095 if (mutex_lock_interruptible(&usbvision->v4l2_lock)) in usbvision_v4l2_mmap()
1098 mutex_unlock(&usbvision->v4l2_lock); in usbvision_v4l2_mmap()
1108 struct usb_usbvision *usbvision = video_drvdata(file); in usbvision_radio_open() local
1113 if (mutex_lock_interruptible(&usbvision->v4l2_lock)) in usbvision_radio_open()
1118 if (usbvision->user) { in usbvision_radio_open()
1119 dev_err(&usbvision->rdev.dev, in usbvision_radio_open()
1125 err_code = usbvision_set_alternate(usbvision); in usbvision_radio_open()
1127 usbvision->last_error = err_code; in usbvision_radio_open()
1133 usbvision->radio = 1; in usbvision_radio_open()
1134 call_all(usbvision, tuner, s_radio); in usbvision_radio_open()
1135 usbvision_set_audio(usbvision, USBVISION_AUDIO_RADIO); in usbvision_radio_open()
1136 usbvision->user++; in usbvision_radio_open()
1139 mutex_unlock(&usbvision->v4l2_lock); in usbvision_radio_open()
1146 struct usb_usbvision *usbvision = video_drvdata(file); in usbvision_radio_close() local
1150 mutex_lock(&usbvision->v4l2_lock); in usbvision_radio_close()
1152 usbvision->iface_alt = 0; in usbvision_radio_close()
1153 usb_set_interface(usbvision->dev, usbvision->iface, in usbvision_radio_close()
1154 usbvision->iface_alt); in usbvision_radio_close()
1156 usbvision_audio_off(usbvision); in usbvision_radio_close()
1157 usbvision->radio = 0; in usbvision_radio_close()
1158 usbvision->user--; in usbvision_radio_close()
1160 if (usbvision->remove_pending) { in usbvision_radio_close()
1163 usbvision_release(usbvision); in usbvision_radio_close()
1167 mutex_unlock(&usbvision->v4l2_lock); in usbvision_radio_close()
1251 static void usbvision_vdev_init(struct usb_usbvision *usbvision, in usbvision_vdev_init() argument
1256 struct usb_device *usb_dev = usbvision->dev; in usbvision_vdev_init()
1259 dev_err(&usbvision->dev->dev, in usbvision_vdev_init()
1265 vdev->lock = &usbvision->v4l2_lock; in usbvision_vdev_init()
1266 vdev->v4l2_dev = &usbvision->v4l2_dev; in usbvision_vdev_init()
1268 video_set_drvdata(vdev, usbvision); in usbvision_vdev_init()
1272 static void usbvision_unregister_video(struct usb_usbvision *usbvision) in usbvision_unregister_video() argument
1275 if (video_is_registered(&usbvision->rdev)) { in usbvision_unregister_video()
1277 video_device_node_name(&usbvision->rdev)); in usbvision_unregister_video()
1278 video_unregister_device(&usbvision->rdev); in usbvision_unregister_video()
1282 if (video_is_registered(&usbvision->vdev)) { in usbvision_unregister_video()
1284 video_device_node_name(&usbvision->vdev)); in usbvision_unregister_video()
1285 video_unregister_device(&usbvision->vdev); in usbvision_unregister_video()
1290 static int usbvision_register_video(struct usb_usbvision *usbvision) in usbvision_register_video() argument
1295 usbvision_vdev_init(usbvision, &usbvision->vdev, in usbvision_register_video()
1297 if (!usbvision->have_tuner) { in usbvision_register_video()
1298 v4l2_disable_ioctl(&usbvision->vdev, VIDIOC_G_FREQUENCY); in usbvision_register_video()
1299 v4l2_disable_ioctl(&usbvision->vdev, VIDIOC_S_TUNER); in usbvision_register_video()
1300 v4l2_disable_ioctl(&usbvision->vdev, VIDIOC_G_FREQUENCY); in usbvision_register_video()
1301 v4l2_disable_ioctl(&usbvision->vdev, VIDIOC_S_TUNER); in usbvision_register_video()
1303 if (video_register_device(&usbvision->vdev, VFL_TYPE_GRABBER, video_nr) < 0) in usbvision_register_video()
1306 usbvision->nr, video_device_node_name(&usbvision->vdev)); in usbvision_register_video()
1309 if (usbvision_device_data[usbvision->dev_model].radio) { in usbvision_register_video()
1311 usbvision_vdev_init(usbvision, &usbvision->rdev, in usbvision_register_video()
1313 if (video_register_device(&usbvision->rdev, VFL_TYPE_RADIO, radio_nr) < 0) in usbvision_register_video()
1316 usbvision->nr, video_device_node_name(&usbvision->rdev)); in usbvision_register_video()
1322 dev_err(&usbvision->dev->dev, in usbvision_register_video()
1324 usbvision->nr); in usbvision_register_video()
1325 usbvision_unregister_video(usbvision); in usbvision_register_video()
1341 struct usb_usbvision *usbvision; in usbvision_alloc() local
1343 usbvision = kzalloc(sizeof(struct usb_usbvision), GFP_KERNEL); in usbvision_alloc()
1344 if (usbvision == NULL) in usbvision_alloc()
1347 usbvision->dev = dev; in usbvision_alloc()
1348 if (v4l2_device_register(&intf->dev, &usbvision->v4l2_dev)) in usbvision_alloc()
1351 if (v4l2_ctrl_handler_init(&usbvision->hdl, 4)) in usbvision_alloc()
1353 usbvision->v4l2_dev.ctrl_handler = &usbvision->hdl; in usbvision_alloc()
1354 mutex_init(&usbvision->v4l2_lock); in usbvision_alloc()
1357 usbvision->ctrl_urb = usb_alloc_urb(USBVISION_URB_FRAMES, GFP_KERNEL); in usbvision_alloc()
1358 if (usbvision->ctrl_urb == NULL) in usbvision_alloc()
1360 init_waitqueue_head(&usbvision->ctrl_urb_wq); in usbvision_alloc()
1362 return usbvision; in usbvision_alloc()
1365 v4l2_ctrl_handler_free(&usbvision->hdl); in usbvision_alloc()
1366 v4l2_device_unregister(&usbvision->v4l2_dev); in usbvision_alloc()
1368 kfree(usbvision); in usbvision_alloc()
1379 static void usbvision_release(struct usb_usbvision *usbvision) in usbvision_release() argument
1383 usbvision->initialized = 0; in usbvision_release()
1385 usbvision_remove_sysfs(&usbvision->vdev); in usbvision_release()
1386 usbvision_unregister_video(usbvision); in usbvision_release()
1387 kfree(usbvision->alt_max_pkt_size); in usbvision_release()
1389 usb_free_urb(usbvision->ctrl_urb); in usbvision_release()
1391 v4l2_ctrl_handler_free(&usbvision->hdl); in usbvision_release()
1392 v4l2_device_unregister(&usbvision->v4l2_dev); in usbvision_release()
1393 kfree(usbvision); in usbvision_release()
1401 static void usbvision_configure_video(struct usb_usbvision *usbvision) in usbvision_configure_video() argument
1405 if (usbvision == NULL) in usbvision_configure_video()
1408 model = usbvision->dev_model; in usbvision_configure_video()
1409 usbvision->palette = usbvision_v4l2_format[2]; /* V4L2_PIX_FMT_RGB24; */ in usbvision_configure_video()
1411 if (usbvision_device_data[usbvision->dev_model].vin_reg2_override) { in usbvision_configure_video()
1412 usbvision->vin_reg2_preset = in usbvision_configure_video()
1413 usbvision_device_data[usbvision->dev_model].vin_reg2; in usbvision_configure_video()
1415 usbvision->vin_reg2_preset = 0; in usbvision_configure_video()
1418 usbvision->tvnorm_id = usbvision_device_data[model].video_norm; in usbvision_configure_video()
1419 usbvision->video_inputs = usbvision_device_data[model].video_channels; in usbvision_configure_video()
1420 usbvision->ctl_input = 0; in usbvision_configure_video()
1421 usbvision->radio_freq = 87.5 * 16000; in usbvision_configure_video()
1422 usbvision->tv_freq = 400 * 16; in usbvision_configure_video()
1427 usbvision_audio_off(usbvision); in usbvision_configure_video()
1429 usbvision_power_on(usbvision); in usbvision_configure_video()
1430 usbvision_i2c_register(usbvision); in usbvision_configure_video()
1447 struct usb_usbvision *usbvision = NULL; in usbvision_probe() local
1498 usbvision = usbvision_alloc(dev, intf); in usbvision_probe()
1499 if (usbvision == NULL) { in usbvision_probe()
1506 usbvision->bridge_type = BRIDGE_NT1004; in usbvision_probe()
1508 usbvision->bridge_type = BRIDGE_NT1005; in usbvision_probe()
1510 usbvision->bridge_type = BRIDGE_NT1003; in usbvision_probe()
1511 PDEBUG(DBG_PROBE, "bridge_type %d", usbvision->bridge_type); in usbvision_probe()
1516 usbvision->num_alt = uif->num_altsetting; in usbvision_probe()
1517 PDEBUG(DBG_PROBE, "Alternate settings: %i", usbvision->num_alt); in usbvision_probe()
1518 usbvision->alt_max_pkt_size = kmalloc(32 * usbvision->num_alt, GFP_KERNEL); in usbvision_probe()
1519 if (usbvision->alt_max_pkt_size == NULL) { in usbvision_probe()
1525 for (i = 0; i < usbvision->num_alt; i++) { in usbvision_probe()
1528 usbvision->alt_max_pkt_size[i] = in usbvision_probe()
1531 usbvision->alt_max_pkt_size[i]); in usbvision_probe()
1535 usbvision->nr = usbvision_nr++; in usbvision_probe()
1537 spin_lock_init(&usbvision->queue_lock); in usbvision_probe()
1538 init_waitqueue_head(&usbvision->wait_frame); in usbvision_probe()
1539 init_waitqueue_head(&usbvision->wait_stream); in usbvision_probe()
1541 usbvision->have_tuner = usbvision_device_data[model].tuner; in usbvision_probe()
1542 if (usbvision->have_tuner) in usbvision_probe()
1543 usbvision->tuner_type = usbvision_device_data[model].tuner_type; in usbvision_probe()
1545 usbvision->dev_model = model; in usbvision_probe()
1546 usbvision->remove_pending = 0; in usbvision_probe()
1547 usbvision->iface = ifnum; in usbvision_probe()
1548 usbvision->iface_alt = 0; in usbvision_probe()
1549 usbvision->video_endp = endpoint->bEndpointAddress; in usbvision_probe()
1550 usbvision->isoc_packet_size = 0; in usbvision_probe()
1551 usbvision->usb_bandwidth = 0; in usbvision_probe()
1552 usbvision->user = 0; in usbvision_probe()
1553 usbvision->streaming = stream_off; in usbvision_probe()
1554 usbvision_configure_video(usbvision); in usbvision_probe()
1555 usbvision_register_video(usbvision); in usbvision_probe()
1557 usbvision_create_sysfs(&usbvision->vdev); in usbvision_probe()
1563 usbvision_release(usbvision); in usbvision_probe()
1580 struct usb_usbvision *usbvision = to_usbvision(usb_get_intfdata(intf)); in usbvision_disconnect() local
1584 if (usbvision == NULL) { in usbvision_disconnect()
1589 mutex_lock(&usbvision->v4l2_lock); in usbvision_disconnect()
1592 usbvision_stop_isoc(usbvision); in usbvision_disconnect()
1594 v4l2_device_disconnect(&usbvision->v4l2_dev); in usbvision_disconnect()
1595 usbvision_i2c_unregister(usbvision); in usbvision_disconnect()
1596 usbvision->remove_pending = 1; /* Now all ISO data will be ignored */ in usbvision_disconnect()
1598 usb_put_dev(usbvision->dev); in usbvision_disconnect()
1599 usbvision->dev = NULL; /* USB device is no more */ in usbvision_disconnect()
1601 mutex_unlock(&usbvision->v4l2_lock); in usbvision_disconnect()
1603 if (usbvision->user) { in usbvision_disconnect()
1606 wake_up_interruptible(&usbvision->wait_frame); in usbvision_disconnect()
1607 wake_up_interruptible(&usbvision->wait_stream); in usbvision_disconnect()
1609 usbvision_release(usbvision); in usbvision_disconnect()